我有一个Recyclerview填充了用户插入的项目。我实现了旋转的功能,因为当我转动设备时,recyclerview显示为空。
调试应用程序,我已经在旋转之前和之前检查完整性,并且ArrayList具有相同的大小。我认为问题是Recyclerview的setNestedScrollingEnabled(false)
,我设置了这个,因为我不想在rv中显示滚动。
问题是:我处于纵向模式,我添加了3个项目,它在recyclerview中显示我很完美。检查图片:
当我将屏幕旋转到横向时,recyclerview的arraylist有3个项目,但高度不会改变,所以它只有一个项目。
那么,我如何解决这个问题?
Recyclerview:
itemsRv = (RecyclerView) findViewById(R.id.itemsRv);
itemsRv.setNestedScrollingEnabled(false);
itemAutoCompleteAdapter = new ItemAutoCompleteAdapter(this);
if(items ==null){
items = new ArrayList<>();
}
itemsAdapter = new ItemsRowAdapter(this, items, new ItemsRowAdapter.itemsRowListener() {
@Override
public void editarItemOnClick(View v, int position) {
editar_item(items.get(position), position);
}
@Override
public void eliminarItemOnClick(View v, final int position) {
}
});
itemsRv.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
itemsRv.setLayoutManager(mLayoutManager);
itemsRv.setAdapter(itemsAdapter);
布局:
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginBottom="4dp"
android:text="Items"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/header_rv_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="4">
<TextView
android:id="@+id/textView3"
android:layout_width="@dimen/widthColumnTable"
android:layout_height="wrap_content"
android:layout_weight="2.8"
android:textStyle="bold"
android:text="Descripción" />
<TextView
android:id="@+id/textView5"
android:layout_width="@dimen/widthColumnTable"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="right"
android:textStyle="bold"
android:text="Cantidad" />
<TextView
android:id="@+id/textView8"
android:layout_width="@dimen/widthColumnTable"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="right"
android:textStyle="bold"
android:text="Precio total" />
<TextView
android:text="Acciones"
android:textStyle="bold"
android:layout_width="100dp"
android:gravity="right"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
<android.support.v7.widget.RecyclerView <----- HERE IT IS
android:id="@+id/itemsRv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn_01_agregar_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:background="@drawable/border_spinner"
android:gravity="left|center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Ingrese el código o descrpción del producto"
android:textAllCaps="false"
android:textColor="#616161" />
</LinearLayout>
</android.support.v7.widget.CardView>
我试图将android:layout_height
更改为wrap_content
和match_parent
但未成功。
非常感谢!
答案 0 :(得分:3)
我找到了解决方案。
我将Recyclerview放在RelativeLayout中,如下所示:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/itemsRv"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
在代码中,我添加了这个
itemsRv.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
itemsRv.setLayoutManager(mLayoutManager);
RelativeLayout.LayoutParams lp =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); //<--- ADD
itemsRv.setLayoutParams(lp);//<--- ADD
itemsRv.setAdapter(itemsAdapter);
得到了这个想法