AppWidget在模拟器和手机上看起来不同 - 转移了View内容

时间:2012-02-23 16:50:29

标签: android android-layout android-xml

Layout在手机上看起来与预期一样,在模拟器上看起来与众不同。我正在使用SDK API 10(Android 2.3)。测试手机是Android 2.3.3(Cyanogen Mod 7)的摩托罗拉里程碑。

SDK布局预览会像模拟器一样呈现预览。

下图显示了右侧的预期渲染(通过电话呈现)和左侧的意外渲染(SDK API 10,模拟器和预览)。

shifted View

造成差异的原因是什么?如何解决?删除边距和填充(通过在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>

1 个答案:

答案 0 :(得分:1)

我认为这是由具有不同宽高比的不同屏幕引起的。由于手机具有4x4单元而不管物理屏幕尺寸如何,每个单元必须更宽或更窄以适合连续4个。使用DP处理密度,但是或多或少正方形的屏幕仍然需要单元格或多或少的正方形。这意味着每个单元的DP数量会有所不同,导致您的视图在不同的设备上看起来不一样。

我找到的唯一解决方案是让您的布局尽可能灵活。