3

在 Android 2.3.3 中开发的应用程序

我正在开发一个计算器应用程序。

问题 1 ::: 我有大约 16 个按钮。有没有一种方法可以在没有它的情况下使用循环(或)设置所有按钮的宽度和高度。我希望所有的按钮都是统一的。

问题 2 ::: 您如何看待这种做法?是好是坏?请解释为什么?假设我每行有 4 个按钮。如果我以编程方式获取屏幕的宽度和高度,然后划分(宽度/ 4)并为每个按钮添加边距,然后分别设置按钮的宽度(宽度/ 4 +边距),这会以某种方式解决问题在不同尺寸的屏幕上显示?

4

5 回答 5

5

根据设备宽度和高度同等提供视图宽度或高度的最佳方法是使用 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));方法。

于 2012-12-06T06:02:19.777 回答
2

运行时设置视图宽度和高度的步骤

首先使用 view.getLayoutParams() 获取布局参数。

其次设置高度和宽度值,然后最后设置视图的布局参数。

LayoutParams params = null;
Button button = (Button)findViewById(R.id.button);
params = button.getLayoutParams();
params.height = 70;
params.width = 70;
button .setLayoutParams(params);
于 2012-12-06T06:04:30.137 回答
2

要记住的事情:

  • 将孩子的 android:layout_width 设置为“0dp”
  • 设置父级的 android:weightSum (编辑:正如 Jason Moore 所注意到的,此属性是可选的,因为默认情况下它设置为子级的 layout_weight 总和)
  • 按比例设置每个孩子的 android:layout_weight (eg weightSum="5", 三个孩子: layout_weight="1", layout_weight="3", layout_weight="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" />

  <Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="1" />

</LinearLayout>

在此处输入图像描述

于 2012-12-06T06:18:45.387 回答
0

您可以通过在 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" />
于 2012-12-06T06:02:29.413 回答
-2

试试这个代码

LayoutParams params = null;
Button button = (Button)findViewById(R.id.button);
params = button .getLayoutParams();
params.height = 100;
params.width = 100;
button .setLayoutParams(params);
于 2012-12-06T06:20:53.857 回答