age*_*ped 18 android listview android-layout
我目前需要使用RecyclerView(或ListView),但项目数固定为4.我希望这4个项目同样使用屏幕上的可用空间.除了应用栏之外,RecyclerView是屏幕上唯一的视图.即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>
Run Code Online (Sandbox Code Playgroud)
但是屏幕上没有显示任何内容.
我想知道的是,我可以在布局XML中使用layout_weight,还是其他什么?如果是这样,怎么样?
jos*_*las 28
正如API参考所述,layout_weight是一个属性LinearLayout,因此它不能与其他ViewGroups一起使用,例如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);
}
Run Code Online (Sandbox Code Playgroud)
Her*_*era 10
试试这个,为我工作
int weight = 3; //number of parts in the recycler view.
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row,parent,false);
rowView.getLayoutParams().height = parent.getHeight() / weight;
return new ViewHolder(rowView);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10890 次 |
| 最近记录: |