android RecyclerView未完全展开以显示所有元素

xsuvu9jc  于 2022-12-25  发布在  Android
关注(0)|答案(3)|浏览(203)

我创建了一个EditText、一个Button和一个RecyclerView(由1个TextView和1个ImageView子视图组成)来添加TextView that looks like this。在顶部的EditText中,用户可以输入文本并点击+按钮。这会将他们的文本添加到一个用于更新RecyclerView的List(String)中。用户可以点击右侧的x来从RecyclerView中删除条目。Here is an image of the overall fragment layout
您可以在图片中看到,问题是在提交几次之后,RecyclerView停止扩展并保持固定大小(注意右下角的小点)。您可以在RecyclerView中滚动以查看项目,项目仍会添加到其中,但不会扩展到全尺寸(图片中的一个有20多个项目)。如果我删除一个项目,高度会因为某种原因而增加,但它仍然不会显示所有元素,当我添加一个新项目时,它会缩小。
我试过的东西
这是RecyclerView代码。层次结构如下

<LinearLayout>
   <ScrollView>
      <LinearLayout>
         <RecyclerView />
      </LinearLayout>
   </ScrollView>
</LinearLayout>

所有高度和宽度均设置为与父项匹配,所有方向均设置为垂直:

<android.support.v7.widget.RecyclerView
            android:id="@+id/ingredientsRecyclerView"
            android:layout_marginTop="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipChildren="false"
            android:clipToPadding="false"
            >

向RecyclerView添加条目的代码(在适配器外部):

ingredientsButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (ingredientsText.getText().toString().length() > 0) {
                mIngredients.add(ingredientsText.getText().toString());
                ingredientsText.setText("");
                mAdapter.notifyDataSetChanged();
                mRecyclerView.setBackgroundResource(R.drawable.rounded_edittext);
            }
        }
    });

最后,从RecyclerView(RV适配器内)删除条目的代码:

cancelImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                        mIngredients.remove(getAdapterPosition());
                mAdapter.notifyItemRemoved(getAdapterPosition());
                mAdapter.notifyItemRangeChanged(getAdapterPosition(), mIngredients.size());
                if(mAdapter.getItemCount() == 0)
                mRecyclerView.setBackgroundResource(0);
            }
        });

任何援助将不胜感激,因为我不能为我的生活弄清楚这一点!

zxlwwiss

zxlwwiss1#

使用NestedScrollView代替RecyclerView上的ScrollViewsetNestedScrollEnabled(false)

1rhkuytd

1rhkuytd2#

k0sh完全正确。添加时,请使用完整的类名,即android.support.v4.widget.NestedScrollView(确保您的build.gradle文件中包含v4支持库),否则Android将找不到NestedScrollView类。Error inflating class - NestedScrollView - class not found

v440hwme

v440hwme3#

使用NestedScrollView代替ScrollView,并且在嵌套滚动视图集isNestedScrollingEnabled = false

相关问题