Android:如何在没有滚动功能的列表中显示所有项目
Posted
技术标签:
【中文标题】Android:如何在没有滚动功能的列表中显示所有项目【英文标题】:Android: How to display all items in a list without scroll functionality 【发布时间】:2019-06-27 19:58:45 【问题描述】:我想显示类似RecyclerView
的内容,但大小会根据列表中的项目数量动态变化。每个项目都显示在项目的View
中。由于列表视图的高度设置为有多少项目视图的总高度,因此不需要在视图中进行任何滚动。
目前,我正在使用 RecyclerView
和 setHasFixedSize = false
,正如您在这个 sn-p 中看到的那样:
recyclerview.apply
layoutManager = LinearLayoutManager(rootView.context)
adapter = PlanAdapter(dateItem.planItems)
setHasFixedSize(false)
在第一个之后不显示任何项目。这是我实现它的示例屏幕:
蓝色突出显示这些项目在本地存储中那里,但我制作的动态 RecyclerView 没有显示这些项目。不过,有比为此创建一个完整的 RecyclerView
更好的选择,对吧?
【问题讨论】:
嗨@fawwaz,不确定是否理解您的问题,所以我可以澄清一下吗?您不希望整个页面能够滚动还是只滚动列表?您根本不想在这个问题上使用 recyclerview 吗?列表的大小是动态变化的还是其中的每个项目?您能事先知道将显示多少个项目吗?他们是很多还是只有少数?你能不能只用一个线性布局来显示项目?即使项目的数量并不总是相同,您也可以根据您拥有的视图数量以编程方式绘制此布局。谢谢。 我不希望列表视图滚动,但如果需要,页面可以滚动。我只是认为制作 recyclerview 并不是最好的解决方案性能。好吧,列表从 0 个项目开始,用户可以从应用程序中创建一个新项目。如何以编程方式绘制此布局?是否只是在每次创建项目时添加线性布局?谢谢 哦,我明白了。好吧,recyclerViews 通常在性能方面非常好,但您可以通过android:nestedScrollingEnabled="false"
禁用它们的滚动并将其留给视图的父级。是的,您可以通过自定义以编程方式向布局添加新项目,从而以编程方式绘制布局。如果我找到样本,我会在这里发布。
【参考方案1】:
如果您想要实现的只是禁用回收器的滚动,您可以通过以编程方式或通过 recyclerView 的 XML 调用 android:nestedScrollingEnabled="false"
来实现。
现在,如果您不想为此使用 recyclerview,您可以使用自定义视图来扩展您的布局,例如 in
public class AllergenView extends LinearLayout
private View rootView;
private ImageView icon;
private String allergenTag;
Activity mActivity;
public AllergenView(Activity activity, String allergenTag)
super(activity);
this.mActivity = activity;
this.allergenTag = allergenTag;
init(activity);
public AllergenView(Context context, AttributeSet attrs)
super(context, attrs);
private void init(Context context)
rootView = inflate(context, R.layout.view_allergen_icon, this);
// Bind views
icon = (ImageView) findViewById(R.id.img_icon);
这样称呼
for (Allergen a : recipe.getAllergen())
View v1 = new AllergenView(mActivity, Utils.toString(a.getAllergen()));
holder.linearLayoutHorizontal.addView(v1);
【讨论】:
对添加到线性布局的视图设置相同的权重,以便视图平均共享垂直空间以上是关于Android:如何在没有滚动功能的列表中显示所有项目的主要内容,如果未能解决你的问题,请参考以下文章
在android列表视图中向下滚动时出现***Exception
仅具有本地 Room 数据库的 Android Paging v3:如何滚动到分页列表中的特定位置?
列表视图的 Android LazyList 初始加载在滚动之前不显示图像