match_parent width does not work in RecyclerView

后端 未结 10 1271
深忆病人
深忆病人 2020-11-27 13:25

My RecyclerView and item has match_parent width but the result is : \"enter

           


        
相关标签:
10条回答
  • 2020-11-27 13:32

    I had done fix like this. In my case problem with activity layout file because i am using ConstraintLayout as root activity layout.Might be case for you too.

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <include
            android:id="@+id/toolBar"
            layout="@layout/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/accent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/toolBar" />
    </android.support.constraint.ConstraintLayout>
    
    0 讨论(0)
  • 2020-11-27 13:34

    In my case, the problem was in RecyclerView XML declaration, the layout_width was 0dp which means match_constraints, when I changed it to match_parent, items started to fill all RecyclerView width:

    <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="0dp"  <-- changed this to "match_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="45dp"
                android:background="@android:color/transparent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHeight_default="wrap"
                app:layout_constraintHeight_max="360dp"
                app:layout_constraintHeight_min="60dp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/header"/>
    
    0 讨论(0)
  • 2020-11-27 13:39

    Can't see your full code, but can guess, that some of the views inside your LinearLayout are 'wrap_content'. You need to make one or some of them expand to the full width by using 'android:layout_weight="1"'

    update: you have a lot of redundant layout_weight's. Make them all 'wrap_content' and for only one of them add layout_weight=1 - for the last CustomTextView. This way, it will occupy all the blank space.

    0 讨论(0)
  • 2020-11-27 13:40

    I solved this with:

     myInflatedRowLayout.getLayoutParams().width = vg.getWidth();
    

    It is replacing the MATCH_PARENT with the actual width of the RecyclerView.

    0 讨论(0)
  • 2020-11-27 13:43

    try this when you set layout params for your item in adapter.

     View viewHolder= LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item, parent, false);
     viewHolder.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
     ViewOffersHolder viewOffersHolder = new ViewOffersHolder(viewHolder);
     return viewOffersHolder;
    
    0 讨论(0)
  • 2020-11-27 13:45

    I was using a FrameLayout with MATCH_PARENT for width and was seeing the same behavior with a RecyclerView + LinearLayoutManager. None of the above changes worked for me until I did the following in the onCreateViewHolder callback:

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // create a new view
        View v = LayoutInflater.from(parent.getContext())
                               .inflate(R.layout.note_layout, parent, false);
        v.setLayoutParams(new RecyclerView.LayoutParams(
              ((RecyclerView) parent).getLayoutManager().getWidth(),
              context.getResources()
                     .getDimensionPixelSize(R.dimen.note_item_height)));
    
        return new ViewHolder(v);
    }
    

    Clearly looks like a bug in (I'm guessing) the RecyclerView implementation.

    0 讨论(0)
提交回复
热议问题