在 Android 2.3.3 中开发的应用程序
我正在开发一个计算器应用程序。
问题 1 ::: 我有大约 16 个按钮。有没有一种方法可以在没有它的情况下使用循环(或)设置所有按钮的宽度和高度。我希望所有的按钮都是统一的。
问题 2 ::: 您如何看待这种做法?是好是坏?请解释为什么?假设我每行有 4 个按钮。如果我以编程方式获取屏幕的宽度和高度,然后划分(宽度/ 4)并为每个按钮添加边距,然后分别设置按钮的宽度(宽度/ 4 +边距),这会以某种方式解决问题在不同尺寸的屏幕上显示?
在 Android 2.3.3 中开发的应用程序
我正在开发一个计算器应用程序。
问题 1 ::: 我有大约 16 个按钮。有没有一种方法可以在没有它的情况下使用循环(或)设置所有按钮的宽度和高度。我希望所有的按钮都是统一的。
问题 2 ::: 您如何看待这种做法?是好是坏?请解释为什么?假设我每行有 4 个按钮。如果我以编程方式获取屏幕的宽度和高度,然后划分(宽度/ 4)并为每个按钮添加边距,然后分别设置按钮的宽度(宽度/ 4 +边距),这会以某种方式解决问题在不同尺寸的屏幕上显示?
根据设备宽度和高度同等提供视图宽度或高度的最佳方法是使用 weight 属性,举个例子,我们有一个线性布局,有四个按钮,宽度相等:
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="button1"/>
<Button android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="button2"/>
<Button android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="button3"/>
<Button android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="button4"/>
</LinearLayout>
但是,如果您仍想在运行时提供布局宽度和高度,则可以使用setLayoutParams(new LayoutParams(100, 100));
方法。
运行时设置视图宽度和高度的步骤
首先使用 view.getLayoutParams() 获取布局参数。
其次设置高度和宽度值,然后最后设置视图的布局参数。
LayoutParams params = null;
Button button = (Button)findViewById(R.id.button);
params = button.getLayoutParams();
params.height = 70;
params.width = 70;
button .setLayoutParams(params);
要记住的事情:
例子:
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
</LinearLayout>
您可以通过在 XML 中设置元素然后在 Java 代码中修改高度和宽度来实现:
Button btn1 = (Button)findViewById(R.id.btn1);
LayoutParams layoutParams = btn1.getLayoutParams();
layoutParams.width(int width);
layoutParams.height(int height);
btn1.setLayoutParams(layoutParams);
或者你可以只使用 Java 来创建整个布局:
for(int x = 0; x<3; x++){
for(int y=0; y<3; y++){
Button btn = new Button(this);
... //Set layoutParams and button info for each button.
}
}
或者另一种选择是使用线性布局并使用元素权重。
<Button
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
weight=".3" />
试试这个代码
LayoutParams params = null;
Button button = (Button)findViewById(R.id.button);
params = button .getLayoutParams();
params.height = 100;
params.width = 100;
button .setLayoutParams(params);