【问题标题】:emulator output different from layout view in android模拟器输出与android中的布局视图不同
【发布时间】:2013-07-15 13:31:37
【问题描述】:

在布局视图中,我的计算器程序如下所示

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

为什么会这样?

这是布局文件代码:

<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>

【问题讨论】:

  • 你能检查一下你的模拟器屏幕和你的设备屏幕有多宽吗?我认为那里有宽度差异。你应该检查一下。
  • 我只在模拟器上这样做
  • 区别在于模拟器屏幕和设计视图;它看起来像我希望它在设计视图上看到的那样,但在模拟器输出上看起来不同
  • 这就是我问你的原因,首先检查你的屏幕密度和宽度是多少。使用代码或明确获取。
  • 我怎样才能知道?在 AVD 中,设备是 Galaxy Nexus (4.65", 720 * 1280:xhdpi),如果我去详细信息...然后它说 hw.lcd.density: 320

标签: android xml android-layout layout android-emulator


【解决方案1】:

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

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"

【讨论】:

    【解决方案2】:

    我认为你最好使用几个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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多