如何为膨胀视图(按钮)设置动态宽度和高度
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()
其中高度和宽度必须是整数
我有一个 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()
其中高度和宽度必须是整数