我在完成应用程序开发的过程中,并将其发送给使用不同设备的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>
.
.
.
.
答案 0 :(得分:0)
决定布局资源的不仅仅是分辨率,还有许多其他分辨率。
请阅读 - http://developer.android.com/guide/practices/screens_support.html
您应该创建特定于屏幕的资源,以便精确控制您的用户界面。
根据屏幕最小宽度和不同方向,有许多文件夹。
例如 -
layout-sw360dp - 任何宽度最小的方向360dp
layout-sw360dp-land-xhdpi - 仅适用于宽度最小的景观 360dp和xhdpi设备
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>