Android:UI项目在具有相同分辨率的某些设备上不可见

时间:2014-09-23 13:59:27

标签: android xml user-interface layout

我在完成应用程序开发的过程中,并将其发送给使用不同设备的beta测试人员。到目前为止一切都那么好,一切都很完美,除了一台使用Sony Experia Z1和Android 4.4.2的测试仪。他报告说他在屏幕上看不到两个imageButtons(请参阅上面值行和底部拨号器之间屏幕截图上的缺少按钮)。所有其他测试人员,无论其设备和分辨率如何,都不会报告此类问题。它只是一个用户。为什么会这样?由于字符限制,我不得不在下面剪切xml代码,两个下拨号行不在那里......

编辑:缺失的行是下面代码中xml的中间部分

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/Calculator"
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=".Calculator">

<LinearLayout
    android:id="@+id/valueRows"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical"
    android:weightSum="100">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center">


        <LinearLayout
            android:id="@+id/TopRow"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="50"
            android:baselineAligned="false">


            <RelativeLayout
                android:id="@+id/heatSector"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_marginRight="1dp"
                android:layout_weight="25"
                android:background="@android:color/holo_green_dark">


                <RelativeLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="35dp">

                    <TextView
                        android:id="@+id/heatValue"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="0.25"
                        android:textColor="@android:color/white"
                        android:textSize="20sp"
                        android:textStyle="bold"
                        android:typeface="normal" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/heatValue"
                        android:layout_centerInParent="true"
                        android:layout_marginTop="-6dp"
                        android:text="W/mm2"
                        android:textColor="@android:color/white"
                        android:textSize="10sp" />

                </RelativeLayout>

            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/ohmSector"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_marginLeft="1dp"
                android:layout_weight="25"
                android:background="@android:color/holo_red_dark">

                <RelativeLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="35dp">

                    <TextView
                        android:id="@+id/itemOhmValue"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="0.57"
                        android:textColor="@android:color/white"
                        android:textSize="20sp"
                        android:textStyle="bold"
                        android:typeface="normal" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/itemOhmValue"
                        android:layout_centerInParent="true"
                        android:layout_marginTop="-6dp"
                        android:text="Ohm"
                        android:textColor="@android:color/white"
                        android:textSize="10sp" />

                </RelativeLayout>

            </RelativeLayout>


        </LinearLayout>

        <LinearLayout
            android:id="@+id/BottomRow"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/TopRow"
            android:layout_marginTop="2dp"
            android:weightSum="50"
            android:baselineAligned="false">


            <RelativeLayout
                android:id="@+id/ampSector"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_marginRight="1dp"
                android:layout_weight="25"
                android:background="@android:color/holo_blue_dark">

                <RelativeLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="35dp">

                    <TextView
                        android:id="@+id/ampValue"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="15.75"
                        android:textColor="@android:color/white"
                        android:textSize="20sp"
                        android:textStyle="bold"
                        android:typeface="normal" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/ampValue"
                        android:layout_centerInParent="true"
                        android:layout_marginTop="-6dp"
                        android:text="Amps"
                        android:textColor="@android:color/white"
                        android:textSize="10sp" />

                </RelativeLayout>

            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/wattSector"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_marginLeft="1dp"
                android:layout_weight="25"
                android:background="@android:color/holo_orange_dark">

                <RelativeLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="35dp">

                    <TextView
                        android:id="@+id/itemWattsValue"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="150"
                        android:textColor="@android:color/white"
                        android:textSize="20sp"
                        android:textStyle="bold"
                        android:typeface="normal" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/itemWattsValue"
                        android:layout_centerInParent="true"
                        android:layout_marginTop="-6dp"
                        android:text="Watts"
                        android:textColor="@android:color/white"
                        android:textSize="10sp" />

                </RelativeLayout>
            </RelativeLayout>

        </LinearLayout>

        <ImageButton
            android:id="@+id/helpButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@android:color/transparent"
            android:src="@drawable/help"
            android:onClick="showHelp" />

        <ImageView
            android:id="@+id/heatSymbol"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="9dp"
            android:layout_marginTop="2dp"
            android:src="@drawable/flame" />

        <ImageView
            android:id="@+id/ohmSymbol"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="5dp"
            android:src="@drawable/ohm" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/heatSymbol"
            android:layout_marginLeft="2dp"
            android:layout_marginTop="14dp"
            android:src="@drawable/amp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@id/ohmSymbol"
            android:layout_marginTop="13dp"
            android:src="@drawable/wattsymbol" />


    </RelativeLayout>

</LinearLayout>
<LinearLayout
    android:id="@+id/wickRow"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/valueRows"
    android:layout_marginTop="10dp"
    android:gravity="center_vertical"
    android:baselineAligned="false"
    >

    <RelativeLayout
        android:id="@+id/cottonElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">


        <ImageButton
            android:id="@+id/cottonButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginRight="-40dp"
            android:background="@android:color/transparent"
            android:onClick="changeCotton"
            android:src="@drawable/cotton" />


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/meshElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">


        <ImageButton
            android:id="@+id/meshButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="-40dp"
            android:background="@android:color/transparent"
            android:onClick="changeMesh"
            android:src="@drawable/mesh" />


    </RelativeLayout>

</LinearLayout>
<LinearLayout
    android:id="@+id/parameterRowTop"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/wickRow"
    android:layout_marginTop="5dp"
    android:gravity="center_vertical"
    android:baselineAligned="false">


    <RelativeLayout
        android:id="@+id/coilDiameterElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">

        <ImageView
            android:id="@+id/coilDiameterImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@drawable/coildiameter" />

        <TextView
            android:id="@+id/itemCoilDiameterValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/coilDiameterImage"
            android:layout_centerInParent="true"
            android:layout_marginBottom="20dp"
            android:clickable="false"
            android:text="2.4"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ffffffff"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/coilDiameterUnit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp"
            android:clickable="false"
            android:text="mm"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ffffffff"
            android:textSize="10sp" />

        <ImageButton
            android:id="@+id/coilDiameterPlus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/coilDiameterImage"
            android:layout_alignRight="@+id/coilDiameterImage"
            android:layout_marginRight="-1dp"
            android:background="@android:color/transparent"
            android:onClick="coilDiameterPlusButton"
            android:src="@drawable/plusbutton" />

        <ImageButton
            android:id="@+id/coilDiameterMinus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/coilDiameterImage"
            android:layout_alignLeft="@+id/coilDiameterImage"
            android:layout_marginLeft="-1dp"
            android:background="@android:color/transparent"
            android:onClick="coilDiameterMinusButton"
            android:src="@drawable/minusbutton" />


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/wireDiameterElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_weight="1"
        android:gravity="center">

        <ImageView
            android:id="@+id/wireDiameterImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@drawable/wirediameter" />

        <TextView
            android:id="@+id/itemWireDiameterValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:clickable="false"
            android:text="0.32"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ffffffff"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/wireDiameterUnit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp"
            android:clickable="false"
            android:text="mm"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ffffffff"
            android:textSize="10sp" />

        <ImageButton
            android:id="@+id/wireDiameterPlus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/wireDiameterImage"
            android:layout_alignRight="@+id/wireDiameterImage"
            android:layout_marginRight="-1dp"
            android:background="@android:color/transparent"
            android:onClick="wireDiameterPlusButton"
            android:src="@drawable/plusbutton" />

        <ImageButton
            android:id="@+id/wireDiameterMinus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/wireDiameterImage"
            android:layout_alignLeft="@+id/wireDiameterImage"
            android:layout_marginLeft="-1dp"
            android:background="@android:color/transparent"
            android:onClick="wireDiameterMinusButton"
            android:src="@drawable/minusbutton" />


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/wrapsElement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_weight="1"
        android:gravity="center">

        <ImageView
            android:id="@+id/wrapsImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@drawable/wraps" />

        <TextView
            android:id="@+id/wrapsValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:clickable="false"
            android:text="6.0"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="#ffffffff"
            android:textStyle="bold" />

        <ImageButton
            android:id="@+id/wrapsPlus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/wrapsImage"
            android:layout_alignRight="@+id/wrapsImage"
            android:layout_marginRight="-1dp"
            android:background="@android:color/transparent"
            android:onClick="wrapsPlusButton"
            android:src="@drawable/plusbutton" />

        <ImageButton
            android:id="@+id/wrapsMinus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/wrapsImage"
            android:layout_alignLeft="@+id/wrapsImage"
            android:layout_marginLeft="-1dp"
            android:background="@android:color/transparent"
            android:onClick="wrapsMinusButton"
            android:src="@drawable/minusbutton" />


    </RelativeLayout>


</LinearLayout>

.
.
.
.

Should Be / Normal Screen

Faulty Screen

2 个答案:

答案 0 :(得分:0)

决定布局资源的不仅仅是分辨率,还有许多其他分辨率。

请阅读 - http://developer.android.com/guide/practices/screens_support.html

您应该创建特定于屏幕的资源,以便精确控制您的用户界面。

根据屏幕最小宽度和不同方向,有许多文件夹。

例如 -

  • layout-sw360dp - 任何宽度最小的方向360dp

  • layout-sw360dp-land-xhdpi - 仅适用于宽度最小的景观 360dp和xhdpi设备

  • layout-sw600dp-land - 仅适用于宽度最小的景观600dp
  • layout-sw600dp-land-tvdpi - 仅适用于宽度最小的景观 600dp和tvdpi设备

  • layout-sw720dp-land - 仅适用于宽度最小的景观720dp

  • layout-sw360dp-port - 仅适用于宽度最小的肖像720dp

还有更多..

请检查您的要求并将布局文件放在适当的布局文件夹中。

注意:

Xperia Z1的物理密度为441 ppi,因此它属于xxhdpi桶。

例如 - mdpi (160 dpi)hdpi (240 dpi)xhdpi (320 dpi)xxhdpi (480 dpi)

所以我们有公式: px = dp * (dpi / 160) or dp = px / (dpi / 160)

在这种情况下, dpi = 480 and px = 1080 所以:

dp = 1080 / (480 / 160) = 1080 / 3 = 360

所以你应该使用 -

Xperia Z1的

layout-sw360dp

答案 1 :(得分:0)

对于所有可能遇到类似问题的人,这里是我解决问题的方法:

我确实删除了内部RelativeLayout,只是将我的两个按钮放在外部LinearLayout中。为后者增加了一个重量和,随后每个按钮的重量......就像一个魅力:

   <LinearLayout
    android:id="@+id/wickRow"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/valueRows"
    android:layout_marginTop="10dp"
    android:gravity="center_vertical"
    android:baselineAligned="false"
    android:orientation="horizontal"
    android:weightSum="2"
    >




        <ImageButton
            android:id="@+id/cottonButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginRight="-40dp"
            android:background="@android:color/transparent"
            android:onClick="changeCotton"
            android:src="@drawable/cotton"
            android:layout_weight="1"/>




        <ImageButton
            android:id="@+id/meshButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="-40dp"
            android:background="@android:color/transparent"
            android:onClick="changeMesh"
            android:src="@drawable/mesh"
            android:layout_weight="1"/>




</LinearLayout>