Android视图layout_width - 如何以编程方式更改?

Hen*_*hiu 60 android android-layout

这是我的观点,我希望将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"/>       
Run Code Online (Sandbox Code Playgroud)

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

jee*_*eet 144

我相信你的问题是只动态改变视图的宽度,而上面的方法会将布局属性完全改为新的,所以我建议首先从视图中获取getLayoutParams(),然后在layoutParams上设置width,最后将layoutParams设置为视图,所以按照以下步骤来做同样的事情.

View view = findViewById(R.id.nutrition_bar_filled);
LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = newWidth;
view.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

  • 您也可以执行"view_instance.getLayoutParams().width = newOne;" (16认同)
  • 为了获得像`match_parent`这样的值,这可以工作:`LayoutParams.MATCH_PARENT` (12认同)

Sha*_*wal 16

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

viewinstance.setLayoutParams(new LayoutParams(width, height));
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是错误的方法,它将丢失已设置的任何其他布局属性,例如layout_gravity (9认同)

Sha*_*wal 8

尝试使用

View view_instance = (View)findViewById(R.id.nutrition_bar_filled);
view_instance.setWidth(10);
Run Code Online (Sandbox Code Playgroud)

使用Layoutparams 可以设置宽度和高度,如下所示.

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content);
View_instance.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)

  • 方法setWidth(int)未定义View类型 (2认同)

M. *_*han 6

或者简单地:

view.getLayoutParams().width = 400;
view.requestLayout();
Run Code Online (Sandbox Code Playgroud)