【发布时间】:2018-01-22 10:57:20
【问题描述】:
当通过 xml 创建 GridView 时,我使用以下代码,但如何在运行时以编程方式实现?
android:layout_height="0dp"
android:layout_weight="1"
谢谢。
【问题讨论】:
标签: android android-layout android-linearlayout android-view android-layout-weight
当通过 xml 创建 GridView 时,我使用以下代码,但如何在运行时以编程方式实现?
android:layout_height="0dp"
android:layout_weight="1"
谢谢。
【问题讨论】:
标签: android android-layout android-linearlayout android-view android-layout-weight
使用这个
GridView YOUR_GRID_VIEW =(GridView )findViewById(R.id.GridView )
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
/*width*/ ViewGroup.LayoutParams.MATCH_PARENT,
/*height*/ 0,
/*weight*/ 1.0f
);
YOUR_GRID_VIEW.setLayoutParams(param);
LayoutParams.MATCH_PARENT 表示宽度,0 表示高度,1.0f 表示重量
【讨论】:
如果你在xml中有layout_weight,那意味着GridView的父布局是LinearLayout。
拥有对已附加到视图层次结构的GridView 的引用,您可以简单地获取该视图的LayoutParams,将其转换为LinearLayout.LayoutParams 并执行必要的更改:
GridView gridView = ...;
LinearLayout.LayoutParams params = gridView.getLayoutParams();
params.weight = 1;
params.height = 0;
gridView.setLayoutParams(params);
否则,如果您是从头开始构建GridView,则应自行创建LinearLayout.LayoutParams:
LinearLayout linearLayout = ...;
GridView gridView = new GridView(context);
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
/* height */ 0,
/* weight */ 1);
linearLayout.addView(gridView, params);
【讨论】: