以编程方式设置组件的宽度和高度

时间:2012-12-06 05:57:00

标签: android

在Android 2.3.3中开发的应用程序

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

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

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

5 个答案:

答案 0 :(得分:5)

根据设备宽度和高度同等地提供视图宽度或高度的最佳方法是使用权重属性,举个例子,我们有一个线性布局,有四个宽度相等的按钮:

<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));方法。

答案 1 :(得分: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);

答案 2 :(得分:2)

要记住的事情:

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

enter image description here

答案 3 :(得分: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.
    }    
}

另外一个选项是使用linearLayout并使用元素权重。

<Button
    android:id="@+id/register"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    weight=".3" />

答案 4 :(得分:-2)

尝试此代码

LayoutParams params = null;
Button button = (Button)findViewById(R.id.button);
params = button .getLayoutParams();
params.height = 100;
params.width = 100;
button .setLayoutParams(params);