75

这是我的观点,我希望将 layout_width 更改为“10dip”。我如何以编程方式执行此操作?请注意,这不是 LinearLayout,而是 View。

<View 
    android:id="@+id/nutrition_bar_filled" 
    android:background="@drawable/green_rectangle" 
    android:layout_height="30dp"
    android:layout_width="50dp"/>       

我知道 LayoutParams。如何使用它将宽度设置为 10dip?

4

5 回答 5

175

我相信您的问题是仅动态更改视图的宽度,而上述方法会将布局属性完全更改为新的,因此我建议首先从视图中获取布局参数(),然后在 layoutParams 上设置宽度,最后将 layoutParams 设置为视图,所以按照下面的步骤做同样的事情。

View view = findViewById(R.id.nutrition_bar_filled);
LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = newWidth;
view.setLayoutParams(layoutParams);
于 2012-04-15T07:33:29.860 回答
16

您也可以像这样设置高度和宽度:

viewinstance.setLayoutParams(new LayoutParams(width, height));
于 2012-04-15T04:26:57.420 回答
13

或者简单地说:

view.getLayoutParams().width = 400;
view.requestLayout();
于 2016-01-29T12:27:20.180 回答
10

尝试使用

View view_instance = (View)findViewById(R.id.nutrition_bar_filled);
view_instance.setWidth(10);

使用Layoutparams 来设置宽度和高度,如下所示。

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content);
View_instance.setLayoutParams(lp);
于 2012-04-15T04:14:59.110 回答
3

androidx( core-ktx) 包含一个更新布局参数的扩展函数,例如:

view.updateLayoutParams<ConstraintLayout.LayoutParams> {
    width = ConstraintLayout.LayoutParams.MATCH_PARENT
    // or wrap_content
    width = ConstraintLayout.LayoutParams.WRAP_CONTENT
    // or size measured in pixels
    width = 200 
}
于 2021-11-24T16:08:59.960 回答