2012-02-23 2 views
1

Layout выглядит как ожидается на телефоне и выглядит по-другому на эмуляторе. Я использую SDK API 10 (Android 2.3). Тест-телефон - это Motorola Milestone с Android 2.3.3 (Cyanogen Mod 7).AppWidget выглядит по-разному на эмуляторе и телефоне - смещен Просмотр содержимого

Предварительный просмотр макета SDK предоставляет предварительный просмотр, подобный эмулятору.

На следующем рисунке показан ожидаемый рендеринг с правой стороны (отображается по телефону) и неожиданный рендеринг с левой стороны (SDK API 10, эмулятор и предварительный просмотр).

shifted View

Что является причиной различия и как это исправить? Удаление поля и отступов (путем установки его 0dp на TextView1) не помогло.

структура главного (родительский)

<?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

Я считаю, что это вызвано различными экранами, имеющими различные соотношения сторон. Так как телефоны имеют 4x4 ячейки независимо от физического размера экрана, каждая ячейка должна быть более широкой или узкой, чтобы соответствовать 4 в ряд. Использование DP заботится о плотности, но экраны, которые являются более или менее квадратными, по-прежнему требуют, чтобы ячейки были более или менее квадратными. Это означает, что количество DP на ячейку будет меняться и заставлять ваши представления не выглядеть одинаково на разных устройствах.

Единственное решение, которое я нашел, - сделать ваши макеты максимально гибкими.