Android:UI项目在某些具有相同分辨率的设备上不可见
我正在完成应用程序的开发并将其发送到具有不同设备的beta测试人员。迄今为止这么好,除了一台使用Android 4.4.2的索尼Experia Z1的测试仪外,其他所有功能都完美无缺。他报告说,他无法在屏幕上看到两个图像按钮(请参阅上面的值行和底部的拨号程序之间截图上缺少的按钮)。所有其他测试者,不管他们的设备和分辨率如何,都不会报告此类问题。这只是一个用户。任何帮助为什么会发生?我不得不削减下面的XML代码,因为字符限制的,两个下拨号行是不是在那里...Android:UI项目在某些具有相同分辨率的设备上不可见
编辑:缺少行是在下面的代码
<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>
中段的XML的
<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/coilDiame*"
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="coilDiame*Button"
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/wireDiame*"
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="wireDiame*Button"
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>
.
.
.
.
各位可能会遇到类似的问题,在这里我的解决问题的办法:
我没有取下内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>
它不仅决定了布局资源的分辨率,但许多人都可以。
请仔细阅读 - http://developer.android.com/guide/practices/screens_support.html
你应该为你的UI的精确控制,创建特定的屏幕资源。
根据屏幕最小宽度以及不同方向,有很多文件夹。
例如 -
布局sw360dp - 用最小宽度任何方位360dp
布局sw360dp-土地xhdpi - 只为景观带最小宽度 360dp和xhdpi设备
- 布局sw600dp土地 - 只为景观带最小宽度为600 dp
布局sw600dp-土地tvdpi - 只为景观带最小宽度 为600 dp和tvdpi设备
layout-sw720dp-land - 仅适用于最小宽度720dp的景观
布局sw360dp端口 - 仅适用于人像与最小宽度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
所以你应该使用 -
layout-sw360dp为Xperia Z1。
感谢您的建议,我不知道这应该如何虽然解决我的问题,或者还好说,你说我应该把我的XML的精确副本到一个特殊的文件夹?如果是,那么应该改变什么? – CRE8IT 2014-09-23 14:46:27