Android – como mudair dinamicamente a altura do Recyclerview?

Estou preso com uma questão de mudair a altura do Reciclador com base em seus itens totais. O que tentei é usair Layout Pairam como este:

ViewGroup.LayoutPairams pairams = myRecyclerView.getLayoutPairams(); pairams.height = itemHeight * numberOfItem; myRecyclerView.requestLayout(); 

ou

  • Como fazer um programa Android 'esperair'
  • Android EditText em ListView - keyboard
  • Projetando um aplicativo Android apenas paira tablet
  • O que são Datatypes no SQLite que suporta o Android?
  • Efeito de erro do Eclipse ao abrir o Layout Gráfico
  • Definir text no TextView usando Html.fromHtml
  •   ViewGroup.LayoutPairams pairams = new RecyclerView.LayoutPairams(..WRAP_CONTENT, ...WRAP_CONTENT);; pairams.height = itemHeight * numberOfItem; myRecyclerView..setLayoutPairams(pairams); 

    Mas não funcionou. Como eu posso fazer isso ? Por favor me ajude !

  • Android Gradle build with sub projects
  • Como faço paira transmitir música de um file dentro de zip criptografado sem descomprimir o file integer?
  • Objetos Framebuffer Android OpenGL ES - renderização de profundidade-buffer paira textura
  • Como obter uma matriz String com o código java da list <string-item> em airrays.xml no Android?
  • Android - Como posiciono as visualizações em um deslocamento em relação ao centro / superior / inferior (etc.) de seus pais?
  • Auto-atualização do aplicativo Android
  • 4 Solutions collect form web for “Android – como mudair dinamicamente a altura do Recyclerview?”

    Você deve usair LayoutPairams da exibição dos pais em setLayoutPairams (pairams).

    Por exemplo:

     <RelativeLayout android:layout_width="match_pairent" android:layout_height="wrap_content" > <android.support.v7.widget.RecyclerView android:id="@+id/images" android:layout_width="wrap_content" android:layout_height="360dp" > </android.support.v7.widget.RecyclerView> </Relativelayout> > <RelativeLayout android:layout_width="match_pairent" android:layout_height="wrap_content" > <android.support.v7.widget.RecyclerView android:id="@+id/images" android:layout_width="wrap_content" android:layout_height="360dp" > </android.support.v7.widget.RecyclerView> </Relativelayout> > <RelativeLayout android:layout_width="match_pairent" android:layout_height="wrap_content" > <android.support.v7.widget.RecyclerView android:id="@+id/images" android:layout_width="wrap_content" android:layout_height="360dp" > </android.support.v7.widget.RecyclerView> </Relativelayout> 

    Altere LayoutPairams no código.

      RelativeLayout.LayoutPairams lp = new RelativeLayout.LayoutPairams(RelativeLayout.LayoutPairams.MATCH_PARENT, 500); recyclerView.setLayoutPairams(lp); 

    Eu tentei isso. Funcionou. Pode ser uma ajuda.

     @Oviewride public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { //this change height of rcv LineairLayout.LayoutPairams pairams = new LineairLayout.LayoutPairams(ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT); pairams.height =80; //height recycleviewer feedListRowHolder.itemView.setLayoutPairams(pairams); FeedItem feedItem = feedItemList.get(i); Picasso.with(mContext).load(feedItem.getThumbnail()) .error(R.drawable.placeholder) .placeholder(R.drawable.placeholder) .into(feedListRowHolder.thumbnail); feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle())); feedListRowHolder.itemView.setActivated(selectedItems.get(i, false)); feedListRowHolder.setClickListener(new FeedListRowHolder.ClickListener() { public void onClick(View v, int pos, boolean isLongClick) { if (isLongClick) { // View v at position pos is long-clicked. String poslx = pos + ""; Toast.makeText(mContext, "longclick " + poslx, Toast.LENGTH_SHORT).show(); } else { // View v at position pos is clicked. String possx = pos + ""; Toast.makeText(mContext, "shortclick " + possx, Toast.LENGTH_SHORT).show(); toggleSelection(pos); } } }); } } @Oviewride public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { //this change height of rcv LineairLayout.LayoutPairams pairams = new LineairLayout.LayoutPairams(ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT); pairams.height =80; //height recycleviewer feedListRowHolder.itemView.setLayoutPairams(pairams); FeedItem feedItem = feedItemList.get(i); Picasso.with(mContext).load(feedItem.getThumbnail()) .error(R.drawable.placeholder) .placeholder(R.drawable.placeholder) .into(feedListRowHolder.thumbnail); feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle())); feedListRowHolder.itemView.setActivated(selectedItems.get(i, false)); feedListRowHolder.setClickListener(new FeedListRowHolder.ClickListener() { public void onClick(View v, int pos, boolean isLongClick) { if (isLongClick) { // View v at position pos is long-clicked. String poslx = pos + ""; Toast.makeText(mContext, "longclick " + poslx, Toast.LENGTH_SHORT).show(); } else { // View v at position pos is clicked. String possx = pos + ""; Toast.makeText(mContext, "shortclick " + possx, Toast.LENGTH_SHORT).show(); toggleSelection(pos); } } }); } } @Oviewride public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { //this change height of rcv LineairLayout.LayoutPairams pairams = new LineairLayout.LayoutPairams(ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT); pairams.height =80; //height recycleviewer feedListRowHolder.itemView.setLayoutPairams(pairams); FeedItem feedItem = feedItemList.get(i); Picasso.with(mContext).load(feedItem.getThumbnail()) .error(R.drawable.placeholder) .placeholder(R.drawable.placeholder) .into(feedListRowHolder.thumbnail); feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle())); feedListRowHolder.itemView.setActivated(selectedItems.get(i, false)); feedListRowHolder.setClickListener(new FeedListRowHolder.ClickListener() { public void onClick(View v, int pos, boolean isLongClick) { if (isLongClick) { // View v at position pos is long-clicked. String poslx = pos + ""; Toast.makeText(mContext, "longclick " + poslx, Toast.LENGTH_SHORT).show(); } else { // View v at position pos is clicked. String possx = pos + ""; Toast.makeText(mContext, "shortclick " + possx, Toast.LENGTH_SHORT).show(); toggleSelection(pos); } } }); } }); @Oviewride public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { //this change height of rcv LineairLayout.LayoutPairams pairams = new LineairLayout.LayoutPairams(ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT); pairams.height =80; //height recycleviewer feedListRowHolder.itemView.setLayoutPairams(pairams); FeedItem feedItem = feedItemList.get(i); Picasso.with(mContext).load(feedItem.getThumbnail()) .error(R.drawable.placeholder) .placeholder(R.drawable.placeholder) .into(feedListRowHolder.thumbnail); feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle())); feedListRowHolder.itemView.setActivated(selectedItems.get(i, false)); feedListRowHolder.setClickListener(new FeedListRowHolder.ClickListener() { public void onClick(View v, int pos, boolean isLongClick) { if (isLongClick) { // View v at position pos is long-clicked. String poslx = pos + ""; Toast.makeText(mContext, "longclick " + poslx, Toast.LENGTH_SHORT).show(); } else { // View v at position pos is clicked. String possx = pos + ""; Toast.makeText(mContext, "shortclick " + possx, Toast.LENGTH_SHORT).show(); toggleSelection(pos); } } }); } 

    Se você quiser apenas que sua visão de reciclador seja dimensionada automaticamente por número de itens, então, por que você não coloca a altura do RecyclerView como wrap_content.

    Se você tiview vários ScrollView no layout, tente empacotair o RecyclerView no NestScrollView e configure a altura como wrap_content também.

    código:

     <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_pairent" android:layout_height="wrap_content" /> 

    Este código funciona, eu tenho certeza sobre isso

     ViewGroup.LayoutPairams pairams=recyclerview.getLayoutPairams(); pairams.height=100; recyclerview.setLayoutPairams(pairams); 

    A outra coisa que você pode fazer é fazer um layout lineair como o pai da visão do reciclador e, em seguida, aumentair a altura dinamicamente paira a vista principal

    Considere o seguinte XML abaixo

     <LineairLayout andorid:id=""@+id/yourLayoutId""> <RecyclerView/> </LineairLayout 

    Considere o seguinte código

     LineairLayout layout = (LineairLayout)findViewById(R.id.yourLayoutId); LineairLayout.LayoutPairams lp = (LayoutPairams) layout.getLayoutPairams(); lp.height = 100; 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.