我目前需要使用 RecyclerView(或 ListView),但项目数固定为 4。我希望这 4 个项目能够平等地使用屏幕上的可用空间。 RecyclerView 是屏幕上除应用栏外的唯一 View 。 IE。 RecyclerView 将 layout_height
设置为 match_parent
。我选择 RecyclerView 是因为项目根据模型状态具有不同的布局。
我还没有查看它,但我确信我可以在 Java 代码中以编程方式为每个项目设置高度。但是,如果我可以在 XML 中指定它,那似乎不优雅。在我写这篇文章的时候,我右边的类似问题请回答那个问题。
我在item_layout.xml文件中尝试了如下方式,layout_weight
在其他场景中的使用方式:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp">...</LinearLayout>
然后屏幕上什么也没有显示。
我想知道的是,我可以在布局 XML 中使用 layout_weight
或其他方式执行此操作吗?如果有,怎么做?
最佳答案
作为 API reference说,layout_weight
是 LinearLayout
的一个属性,所以它不能与其他 ViewGroup 一起使用,例如 RecyclerView
和 ListView
。相反,您必须以编程方式设置项目的高度。
由于您似乎担心代码的清洁度,我认为这是一个相当优雅的解决方案,以防您使用 RecyclerView
:
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.item_list, null);
int height = parent.getMeasuredHeight() / 4;
int width = parent.getMeasuredWidth();
view.setLayoutParams(new RecyclerView.LayoutParams(width, height));
return new ViewHolder(view);
}
关于android - 如何在 RecyclerView 或 ListView 项目 View 中使用 layout_weight 让等高的项目填满屏幕上的可用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776698/