在布局视图中,我的计算器程序如下所示
但是当我运行我的程序时,它看起来像这样
为什么会这样?
这是布局文件代码:
<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>
答案 0 :(得分: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"
答案 1 :(得分: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>