如何为膨胀视图(按钮)设置动态宽度和高度

How to set Dynamic width and height for an inflated view(button)

我有一个 activity,我可以使用 LayoutInflater 在其上以编程方式创建一些按钮,如下所示:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Button newButton = (Button) inflater.inflate(R.layout.my_button, currentTableRow, false);

和my_button.xml:

<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/newButton"
android:layout_width="30dp"
android:layout_height="30dp"</Button>

它工作正常。但我的问题是:有没有什么方法可以将宽度和高度传递给 my_button.xml,或者有什么方法可以在我想膨胀该视图时设置宽度和高度。我的意思是有时我想设置“30dp”,有时我会提前设置为“45dp”etc.Thanks。

你可以试试这个

newButton .setLayoutParams (new LayoutParams(45, LayoutParams.WRAP_CONTENT)

其中 LayoutParams(int width, int height)

表示第一个参数是宽度,第二个参数是高度..

float scale = context.getResources().getDisplayMetrics().density;

button.getLayoutParams().height = 30 * scale;
button.getLayoutParams().width = 30 * scale;

通过使用上面的代码,可以简单地在 "dp".

中设置高度和宽度

Kotlin 中你可以这样做:

val scale=this.resources.displayMetrics.density
btn.layoutParams.width=(40 * scale).toInt()
btn.layoutParams.height=(40 * scale).toInt()

其中高度和宽度必须是整数