0

在布局视图中,我的计算器程序如下所示
在此处输入图像描述

但是当我运行我的程序时,它看起来像这样

在此处输入图像描述

为什么会这样?

这是布局文件代码:

<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=".MainActivity" >

    <Button
        android:id="@+id/button0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="@string/button_0"
        android:onClick="onClkBn0" />

    <Button
        android:id="@+id/button_dot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button0"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/button0"
        android:text="@string/button_dot" 
        android:onClick="onClkBnDot"/>

    <Button
        android:id="@+id/button_res"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button0"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/button_dot"
        android:text="@string/button_res" 
        android:onClick="onClkBnRes"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_above="@+id/button0"
        android:text="@string/button_1" 
        android:onClick="onClkBn1"/>

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:layout_above="@+id/button_dot"
        android:text="@string/button_2" 
        android:onClick="onClkBn2"/>

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button2"
        android:layout_toRightOf="@+id/button2"
        android:layout_above="@+id/button_res"
        android:text="@string/button_3" 
        android:onClick="onClkBn3"/>

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_alignLeft="@+id/button1"
        android:text="@string/button_4" 
        android:onClick="onClkBn4"/>

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button4"
        android:layout_alignLeft="@+id/button2"
        android:text="@string/button_5" 
        android:onClick="onClkBn5"/>

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button5"
        android:layout_alignLeft="@+id/button3"
        android:text="@string/button_6" 
        android:onClick="onClkBn6"/>

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button4"
        android:layout_alignLeft="@+id/button4"
        android:text="@string/button_7" 
        android:onClick="onClkBn7"/>

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button7"
        android:layout_alignBottom="@+id/button7"
        android:layout_toRightOf="@+id/button4"
        android:text="@string/button_8" 
        android:onClick="onClkBn8"/>

    <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button6"
        android:layout_alignLeft="@+id/button6"
        android:text="@string/button_9" 
        android:onClick="onClkBn9"/>

    <Button
        android:id="@+id/button_plus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button_res"
        android:layout_alignBottom="@+id/button_res"
        android:layout_toRightOf="@+id/button_res"
        android:text="@string/button_plus" 
        android:onClick="onClkBnPlus"/>

    <Button
        android:id="@+id/button_minus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button_plus"
        android:layout_alignLeft="@+id/button_plus"
        android:text="@string/button_minus" 
        android:onClick="onClkBnMinus"/>

    <Button
        android:id="@+id/button_mul"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button_minus"
        android:layout_below="@+id/button9"
        android:text="@string/button_mult" 
        android:onClick="onClkBnMult"/>

    <Button
        android:id="@+id/button_div"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button9"
        android:layout_alignLeft="@+id/button_mul"
        android:text="@string/button_div" 
        android:onClick="onClkBnDiv"/>

    <Button
        android:id="@+id/button_can"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button_div"
        android:layout_centerVertical="true"
        android:text="@string/button_cancel" 
        android:onClick="onClkBnCan"/>

    <TextView
        android:id="@+id/mantissa"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button_can"
        android:layout_alignParentLeft="true"
        android:gravity="right"
        android:text="@string/mantissa_default"
        android:textIsSelectable="true"
        android:textSize="30.0sp" />

    <Button
        android:id="@+id/button_off"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/mantissa"
        android:layout_above = "@+id/button9"
        android:layout_alignLeft="@+id/button9"
        android:layout_toRightOf="@+id/button_can"
        android:onClick="onClkBnOff"
        android:text="@string/button_off" />

</RelativeLayout>
4

2 回答 2

2

您的模拟器正在按照您的要求进行操作。这段代码:

android:layout_centerVertical="true"

将“c”按钮垂直放置在视图的中间。然后您的尾数视图位于该视图的顶部,因为:

android:layout_above="@+id/button_can"

由于以下几行,您的关闭按钮被强制从尾数视图向下延伸到 button_9:

android:layout_below="@+id/mantissa"
android:layout_above = "@+id/button9"

这是一种适合您的解决方案:

<Button
    android:id="@+id/button_can"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@id/button_div"
    android:layout_above="@id/button_div"
    android:text="@string/button_cancel" 
    android:onClick="onClkBnCan"/>

<TextView
    android:id="@+id/mantissa"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/button_can"
    android:layout_alignParentLeft="true"
    android:gravity="right"
    android:text="@string/mantissa_default"
    android:textIsSelectable="true"
    android:textSize="30.0sp" />

<Button
    android:id="@+id/button_off"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above = "@id/button9"
    android:layout_alignLeft="@id/button9"
    android:layout_toRightOf="@id/button_can"
    android:onClick="onClkBnOff"
    android:text="@string/button_off" />

此外,您应该只"@+id/button9"在第一次使用该标签时在字符串中使用 +。随后的引用将是"@id/button9"

于 2013-07-17T07:28:41.833 回答
1

我认为你最好使用几个LinearLayout来获得你想要的方面。

感谢android:layout_weight您将能够在多个屏幕尺寸和密度上拥有相同的布局方面。

这是一个代码示例,显示了您想要的内容,在几种屏幕尺寸/设备密度上您想要的方式:

<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=".MainActivity" >

<TextView
    android:id="@+id/mantissa"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:gravity="right"
    android:text="@string/mantissa_default"
    android:textIsSelectable="true"
    android:textSize="30.0sp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_below="@+id/mantissa"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:orientation="horizontal" >

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25" />

        <Button
            android:id="@+id/button_off"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnOff"
            android:text="@string/button_off" />

        <Button
            android:id="@+id/button_can"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnCan"
            android:text="@string/button_cancel" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button7"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn7"
            android:text="@string/button_7" />

        <Button
            android:id="@+id/button8"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn8"
            android:text="@string/button_8" />

        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn9"
            android:text="@string/button_9" />

        <Button
            android:id="@+id/button_div"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnDiv"
            android:text="@string/button_div" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn4"
            android:text="@string/button_4" />

        <Button
            android:id="@+id/button5"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn5"
            android:text="@string/button_5" />

        <Button
            android:id="@+id/button6"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn6"
            android:text="@string/button_6" />

        <Button
            android:id="@+id/button_mul"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnMult"
            android:text="@string/button_mult" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_above="@+id/button0"
            android:layout_weight="0.25"
            android:onClick="onClkBn1"
            android:text="@string/button_1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_above="@+id/button_dot"
            android:layout_weight="0.25"
            android:onClick="onClkBn2"
            android:text="@string/button_2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn3"
            android:text="@string/button_3" />

        <Button
            android:id="@+id/button_minus"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnMinus"
            android:text="@string/button_minus" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button0"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBn0"
            android:text="@string/button_0"/>

        <Button
            android:id="@+id/button_dot"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnDot"
            android:text="@string/button_dot" />

        <Button
            android:id="@+id/button_res"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnRes"
            android:text="@string/button_res"/>

        <Button
            android:id="@+id/button_plus"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:onClick="onClkBnPlus"
            android:text="@string/button_plus" />
    </LinearLayout>
</LinearLayout>
</RelativeLayout>
于 2013-07-17T07:30:12.407 回答