Layout
在手机上看起来与预期一样,在模拟器上看起来与众不同。我正在使用SDK API 10(Android 2.3)。测试手机是Android 2.3.3(Cyanogen Mod 7)的摩托罗拉里程碑。
SDK布局预览会像模拟器一样呈现预览。
下图显示了右侧的预期渲染(通过电话呈现)和左侧的意外渲染(SDK API 10,模拟器和预览)。
造成差异的原因是什么?如何解决?删除边距和填充(通过在TextView1
设置为0dp)没有帮助。
主要布局(父级)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/test_bg_red"
android:padding="20dp"
>
<include
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
layout="@layout/test_child" />
/>
<include
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
layout="@layout/test_child" />
</RelativeLayout>
子布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="26dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginRight="4dp"
android:gravity="top"
android:includeFontPadding="false"
android:text="42"
android:textSize="32dp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_toRightOf="@+id/textView1"
android:includeFontPadding="false"
android:text="TextView2"
android:textSize="12dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_alignParentTop="true"
android:includeFontPadding="false"
android:text="TextView3"
android:textSize="10dp" />
</RelativeLayout>
答案 0 :(得分:1)
我认为这是由具有不同宽高比的不同屏幕引起的。由于手机具有4x4单元而不管物理屏幕尺寸如何,每个单元必须更宽或更窄以适合连续4个。使用DP处理密度,但是或多或少正方形的屏幕仍然需要单元格或多或少的正方形。这意味着每个单元的DP数量会有所不同,导致您的视图在不同的设备上看起来不一样。
我找到的唯一解决方案是让您的布局尽可能灵活。