match_parent宽度在RecyclerView中不起作用

我的RecyclerView和项目具有match_parent宽度,但结果是: 在这里输入图像说明

<view class="android.support.v7.widget.RecyclerView" android:layout_width="match_parent" 

和项目:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:fab="http://schemas.android.com/apk/res-auto" android:id="@+id/ll_itm" android:orientation="horizontal" android:layout_width="match_parent" 

充分:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:fab="http://schemas.android.com/apk/res-auto" android:id="@+id/ll_itm" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="100" android:gravity="right" > <Button android:layout_width="0dp" android:layout_weight="15" android:layout_height="fill_parent" android:text="ملاحظات" android:id="@+id/button" /> <LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="20" android:gravity="center" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <com.getbase.floatingactionbutton.FloatingActionButton android:layout_width="fill_parent" android:layout_height="fill_parent" fab:fab_plusIconColor="#ff56ff83" fab:fab_colorNormal="@color/d_red" fab:fab_colorPressed="#ff5c86ff" fab:fab_size="mini" fab:fab_icon="@drawable/ic_remove_white" android:id="@+id/fab_rmv" /> <esfandune.ir.elmikarbordiardakan.other.CustomTxtView android:layout_weight="25" android:layout_width="0dp" android:layout_height="fill_parent" android:textAppearance="?android:attr/textAppearanceLarge" android:text="0" android:gravity="right|center_vertical" android:id="@+id/txt_takhir_itm" /> <com.getbase.floatingactionbutton.FloatingActionButton android:layout_width="fill_parent" android:layout_height="fill_parent" fab:fab_plusIconColor="@color/colorprimarylight" fab:fab_colorNormal="@color/colorprimarydark" fab:fab_colorPressed="@color/colorprimary" fab:fab_size="mini" fab:fab_icon="@drawable/ic_add_white" android:id="@+id/fab_add" /> </LinearLayout> </LinearLayout> <Spinner android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="10" android:id="@+id/sp_nomre_itm" android:entries="@array/degrees"/> <LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="10" android:gravity="center" > <!--LinearLayout baraye ine ke nameshod fab ro weight behosh dad--> <com.getbase.floatingactionbutton.FloatingActionButton android:layout_width="fill_parent" android:layout_height="fill_parent" fab:fab_plusIconColor="#ff56ff83" fab:fab_colorNormal="@color/d_green" fab:fab_colorPressed="@color/d_orange" fab:fab_size="normal" fab:fab_icon="@drawable/ic_done_white" android:id="@+id/fab_hazr" /> </LinearLayout> <esfandune.ir.elmikarbordiardakan.other.CustomTxtView android:layout_weight="5" android:layout_width="0dp" android:layout_height="fill_parent" android:textAppearance="?android:attr/textAppearanceLarge" android:text="100" android:gravity="right|center_vertical" android:id="@+id/txt_ghybtNumber_itm" /> <esfandune.ir.elmikarbordiardakan.other.CustomTxtView android:layout_weight="30" android:layout_width="0dp" android:layout_height="fill_parent" android:textAppearance="?android:attr/textAppearanceLarge" android:text="عباسعلی ملاحسینی اردکانی" android:gravity="right|center_vertical" android:id="@+id/txt_title_itm" android:layout_marginRight="10dp" /> <view android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="10" class="de.hdodenhof.circleimageview.CircleImageView" android:id="@+id/view" android:src="@drawable/mmrdf" /> </LinearLayout> 

在你的适配器中,你在膨胀onCreateViewHolder的项目,是inflate调用null的第二个参数?

如果是这样,请将其更改parent ,这是onCreateViewHolder函数签名中的第一个参数。

 View rootView = LayoutInflater.from(context).inflate(R.layout.itemLayout, parent, false); 

如果你需要第二个参数为null那么当你得到膨胀的视图引用时,请执行以下操作

 View rootView = LayoutInflater.from(context).inflate(R.layout.itemLayout, null, false); RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); rootView.setLayoutParams(lp); return new RecyclerViewHolder(rootView); 

里面onCreateViewHolder(…)适配器的方法,你膨胀视图..你必须定义ViewGroup为父。这将从第一个参数的onCreateViewHolder(…)方法。

看到我传递ViewGroup的第二个参数中的下面一行。 这将自动匹配视图到其父:

 rowView=inflater.inflate(R.layout.home_custom_list, parent,false); 

///完整的代码如下

 public View onCreateViewHolder(ViewGroup parent, int position) { // TODO Auto-generated method stub View rowView; LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); rowView=inflater.inflate(R.layout.home_custom_list, parent,false); 

当您在适配器中为您的项目设置布局参数时,请尝试此操作。

  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; 

我解决了这个问题:

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

它正在用MATCH_PARENT的实际宽度replaceMATCH_PARENT

无法看到完整的代码,但可以猜测,LinearLayout中的一些视图是“ wrap_content ”。 您需要通过使用' android:layout_weight="1" '使其中一个或一些扩展到全宽

更新:你有很多冗余layout_weight的。 将它们全部设置为' wrap_content ',并且只为其中的一个添加layout_weight=1 – 用于最后一个CustomTextView。 这样,它将占据所有的空白空间。

我正在使用与MATCH_PARENTFrameLayout宽度,并看到与RecyclerView + LinearLayoutManager相同的行为。 上述变化都没有为我工作,直到我在onCreateViewHoldercallback中执行以下操作:

 @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); } 

显然看起来像(我猜)RecyclerView实现中的一个错误。