Android相对布局:按钮布局参数冲突

时间:2013-05-07 08:17:30

标签: android button layout resize relative

我正在尝试制作我的第一个Android计算器,我写的第一个代码导致了一个小按钮的计算器,它不会根据屏幕大小重新调整大小。 我在互联网上搜索并找到了一些方法,这是代码的一部分 - 我有20个按钮,编号从0到19 -

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    int width,height;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
    {
        WindowManager w = getWindowManager();
        w.getDefaultDisplay().getSize(size);
        width = size.x;
        height = size.y;
    }
    else
    {
        width = display.getWidth();
        height = display.getHeight();
    }
    Button b;
    TextView text1 = (TextView)findViewById(R.id.screen);
    text1.setWidth(width);
    width/=6;
    height/=7;
    text1.setHeight(height);
    for (int i=0;i<20;i++)
    {
        String ButtonName = "button"+i;
        int ButtonId = getResources().getIdentifier(ButtonName, "id", "calculator.essam.net");
        b = (Button)findViewById(ButtonId);
        RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(b.getLayoutParams());
par.width = width;
par.height = height;
        b.setLayoutParams(par);
    }
}

在XML文件中,列出了我的按钮布局规则,例如toLeftOftoRightOfabovebelow,{{ 1}},alignParentTopalignParentLeftalignParentRight

alignParentBottom

问题当我使用<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".WelcomeActivity" > <TextView android:id="@+id/screen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentTop="true" android:text="" /> <Button android:id="@+id/button0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button18" android:layout_alignParentLeft="true" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="0" android:text="@string/number0" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button0" android:layout_alignParentLeft="true" android:layout_below="@+id/button4" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="1" android:text="@string/number1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button10" android:layout_below="@+id/button5" android:layout_toLeftOf="@+id/button3" android:layout_toRightOf="@+id/button1" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="2" android:text="@string/number2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button15" android:layout_below="@+id/button6" android:layout_toLeftOf="@+id/button13" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="3" android:text="@string/number3" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button7" android:layout_toLeftOf="@+id/button5" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="4" android:text="@string/number4" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button8" android:layout_toLeftOf="@+id/button6" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="5" android:text="@string/number5" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button9" android:layout_toLeftOf="@+id/button12" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="6" android:text="@string/number6" /> <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/screen" android:layout_toLeftOf="@+id/button8" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="7" android:text="@string/number7" /> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/screen" android:layout_toLeftOf="@+id/button9" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="8" android:text="@string/number8" /> <Button android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/screen" android:layout_toLeftOf="@+id/button11" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="9" android:text="@string/number9" /> <Button android:id="@+id/button10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button19" android:layout_toRightOf="@+id/button0" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="." android:text="@string/dot" /> <Button android:id="@+id/button11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button12" android:layout_alignParentRight="true" android:layout_below="@+id/screen" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="+" android:text="@string/signPlus" /> <Button android:id="@+id/button12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button13" android:layout_alignParentRight="true" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="-" android:text="@string/signMinus" /> <Button android:id="@+id/button13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button14" android:layout_alignParentRight="true" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="*" android:text="@string/signTimes" /> <Button android:id="@+id/button14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button17" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/button15" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="/" android:text="@string/signDivide" /> <Button android:id="@+id/button15" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button16" android:layout_toRightOf="@+id/button10" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="=" android:text="@string/signEquals" /> <Button android:id="@+id/button16" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_toLeftOf="@+id/button17" android:layout_toRightOf="@+id/button19" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="(" android:text="@string/openBracket" /> <Button android:id="@+id/button17" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag=")" android:text="@string/closedBracket" /> <Button android:id="@+id/button18" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="CLR" android:text="@string/clear" android:textSize="12sp" /> <Button android:id="@+id/button19" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_toRightOf="@+id/button18" android:minHeight="0dp" android:minWidth="0dp" android:onClick="click" android:tag="DEL" android:text="@string/backSpace" android:textSize="12sp" /> 时,我的所有布局规则都会被覆盖,当我使用RelativeLayout.LayoutParamsbutton.setWidth()时,布局规则保持不变,但规模不变。 欢迎任何帮助,提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该在现有布局参数上设置宽度和高度,而不是用新的替换它。您可以使用getLayoutParams()访问布局通胀期间创建的布局参数。也就是说,替换

RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(b.getLayoutParams());

RelativeLayout.LayoutParams par = b.getLayoutParams();

但是,我建议您忘记这种布局,并学会使用LinearLayout layout_weight机制来制作相对于可用空间的视图大小。