use*_*404 8 android view params
我知道如何LayoutParams通过执行以下操作来设置视图的宽度和高度:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams();
params.width = height/7;
params.height = height/10;
button.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
现在,只要我想将相同的高度和宽度应用到另一个按钮,我需要创建另一个LayoutParams或覆盖现有的一个,如下所示:
android.view.ViewGroup.LayoutParams params2 = but2.getLayoutParams();
params2.width = height/7;
params2.height = height/10;
but2.setLayoutParams(params2);
Run Code Online (Sandbox Code Playgroud)
我的应用程序中有大约50个按钮,我怀疑为了只改变宽度和高度而得到所有Params被认为是好的代码 - 我想保留剩余的参数(toLeftOf,[...]).
有没有办法只改变参数的宽度和高度,但保留其余的参数?所以它看起来像是这样的:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams();
params.width = height/7;
params.height = height/10;
button.setLayoutParams(params);
button2.setLayoutParams(params);
button3.setLayoutParams(params);
butt[...]
Run Code Online (Sandbox Code Playgroud)
非常感谢提前.
Bar*_*ski 29
使用方法的整个目的getLayoutParams()是从一个View(保留所有规则和东西)中的现有的.然后,您可以修改这些参数的具体参数,LayoutParams并保持其余参数不被修改.因此,如果xml中的设置不同,则需要调用getLayoutParams()和修改返回的对象Views.如果他们在xml中使用完全相同的规则,你可以像在上一个例子中写的一样.
我建议你做的只是制作一个包装整个更新过程的方法LayoutParams.像这样:
private void setDimensions(View view, int width, int height){
android.view.ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = width;
params.height = height;
view.setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)
这将显着简化您的代码,因为您可以为每个按钮调用此方法,并使用适当的宽度和高度值.
setDimensions(button, height/7, height/10);
setDimensions(button2, height/7, height/10);
setDimensions(button3, height/7, height/10);
Run Code Online (Sandbox Code Playgroud)
在Kotlin中我们可以做得更短、更优雅:
view.layoutParams = view.layoutParams.apply {
width = LayoutParams.MATCH_PARENT
height = LayoutParams.WRAP_CONTENT
}
Run Code Online (Sandbox Code Playgroud)
如果您只想更改一个参数:
view.getLayoutParams().width = 400;
view.requestLayout();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22087 次 |
| 最近记录: |