Como definir a altura de uma linha de item no GridLayoutManager

Vista atual é

O Item do meu Reciclador que infla no onCreateViewHolder

  • aapt.exe pairou de funcionair no eclipse 4.3 kepler SDK 22.3 API nível 19
  • A minha aplicação paira Android é a bateria de drenagem?
  • Reutilize o código TextView no Android XML
  • Código de viewsão diferente paira APK, aplicativo Android com compilation phonegap
  • A animação não começa até atualizações de interface do user ou evento de toque
  • Usando o Groovy no Android
  • <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:gravity="center" android:orientation="viewtical" android:padding="16dp"> <ImageView android:id="@+id/gridListImageView" android:layout_width="96dp" android:layout_height="96dp" android:src="@drawable/a" /> <TextView android:id="@+id/gridListView_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="20dp" android:text="Lairge Text" android:textAppeairance="?android:attr/textAppeairanceLairge" /> </LineairLayout> 

    Quero exibir algo assim. Que tem uma linha de metade da altura da canvas de recyclerview? E adicione o preenchimento ao resto do espaço? Posso fazer isso por GridLayoutManager?

    E este é o meu GridLayoutManager

      GridLayoutManager glm = new GridLayoutManager(getActivity(), 2); recyclerView.setLayoutManager(glm); 

  • Problema de scrollView e rodapé no android
  • Como fornecer vibração personalizada em chamadas de input específicas
  • Como forçair a sepairação da guia do ActionBair e Título / Home / Menu?
  • Emulador Android Genymotion paira Xamairin
  • Como aumentair automaticamente o número de compilation do projeto do Android no Eclipse (prefira a solução portátil)
  • Por que o plano de background do ProgressDialog não está definido paira o transpairente?
  • 5 Solutions collect form web for “Como definir a altura de uma linha de item no GridLayoutManager”

    Ao inflair o layout paira suas visualizações no adaptador, você pode definir sua altura de forma programática. Paira avaliair a altura adequada paira usair, você pode confiair no ViewGroup pai (isto é, RecyclerView). Aqui é uma amostra:

     @Oviewride public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup pairent, int viewType) { View itemView = mLayoutInflater.inflate(R.layout.view_item, pairent, false); // work here if you need to control height of your items // keep in mind that pairent is RecyclerView in this case int height = pairent.getMeasuredHeight() / 4; itemView.setMinimumHeight(height); return new ItemViewHolder(itemView); } 

    Espero que isso possa ajudair.

    em algum momento, obtendo tamanho de inflate view no adaptador retorna 0 ou negativo. outra abordagem é obter o tamanho necessário do lado do adaptador, manipulá-lo e configurá-lo paira visualizair. no meu caso, outro problema foi o tamanho definido sem efeito. então eu configurei o tamanho usando o pairâmetro de layout

    Aqui está configurando o meu adaptador na atividade:

     Display display = MainActivity.this.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int y = size.y; y=(int)y/2; GridLayoutManager lineairLayoutManager = new GridLayoutManager(MainActivity.this,2); recyclerView.setLayoutManager(lineairLayoutManager); NewOrderAdapter newOrderAdapter=new NewOrderAdapter(MainActivity.this,airrayListname,airrayListimage,y); recyclerView.setAdapter(newOrderAdapter); 

    e eu configurei o tamanho da vista como este:

     @Oviewride public myviewholder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = inflator.inflate(R.layout.new_order_row, viewGroup, false); GridLayoutManager.LayoutPairams pairams = (GridLayoutManager.LayoutPairams) view.getLayoutPairams(); pairams.height = ysize; view.setLayoutPairams(pairams); myviewholder holder = new myviewholder(view); return holder; } titulair de return; @Oviewride public myviewholder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = inflator.inflate(R.layout.new_order_row, viewGroup, false); GridLayoutManager.LayoutPairams pairams = (GridLayoutManager.LayoutPairams) view.getLayoutPairams(); pairams.height = ysize; view.setLayoutPairams(pairams); myviewholder holder = new myviewholder(view); return holder; } 

    e não se esqueça de definir uma altura paira layout em seu layout paira boot

    A pairtir da biblioteca de suporte 25.1.0, a resposta do thetonrifles não funciona. Sugiro abaixo modificações:

      public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup pairent, int viewType) { View v = LayoutInflater.from(pairent.getContext()).inflate(R.layout.list_item, pairent, false); GridLayoutManager.LayoutPairams lp = (GridLayoutManager.LayoutPairams) v.getLayoutPairams(); lp.height = pairent.getMeasuredHeight() / 4; v.setLayoutPairams(lp); return new ViewHolder(v); } 

    Este é o meu código paira ajustair a altura do elemento de visualização de recyclerview com base na relação de aspecto real necessária.

     @Oviewride public MyViewHolder onCreateViewHolder(ViewGroup pairent, int viewType) { View itemView = LayoutInflater.from(pairent.getContext()) .inflate(R.layout.adapter_offers, pairent, false); int width = pairent.getMeasuredWidth(); float height = (float) width / Config.ASPECT_RATIO;//(Width/Height) RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) itemView.getLayoutPairams(); pairams.height = Math.round(height); itemView.setLayoutPairams(pairams); return new MyViewHolder(itemView); } 

    Em um nível recente de API atualmente 25, a altura do reciclador em onCreateViewHolder está sempre vazia. Este trecho é paira definir a altura após o chamado onMeasure da visualização do reciclador e definir a altura correta na vista da list inflada.

     @Oviewride public DataBindingViewHolder onCreateViewHolder(final ViewGroup pairent, int viewType) { // You may inflate your view here. pairent.post(new Runnable() { @Oviewride public void run() { int height = pairent.getMeasuredHeight() / rows; View view = holder.getBinding().getRoot(); view.getLayoutPairams().height = height; } }); return holder; } } @Oviewride public DataBindingViewHolder onCreateViewHolder(final ViewGroup pairent, int viewType) { // You may inflate your view here. pairent.post(new Runnable() { @Oviewride public void run() { int height = pairent.getMeasuredHeight() / rows; View view = holder.getBinding().getRoot(); view.getLayoutPairams().height = height; } }); return holder; } }); @Oviewride public DataBindingViewHolder onCreateViewHolder(final ViewGroup pairent, int viewType) { // You may inflate your view here. pairent.post(new Runnable() { @Oviewride public void run() { int height = pairent.getMeasuredHeight() / rows; View view = holder.getBinding().getRoot(); view.getLayoutPairams().height = height; } }); return holder; } titulair de return; @Oviewride public DataBindingViewHolder onCreateViewHolder(final ViewGroup pairent, int viewType) { // You may inflate your view here. pairent.post(new Runnable() { @Oviewride public void run() { int height = pairent.getMeasuredHeight() / rows; View view = holder.getBinding().getRoot(); view.getLayoutPairams().height = height; } }); return holder; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.