AppWidget выглядит по-разному на эмуляторе и телефоне - смещено Просмотр содержимого - PullRequest
1 голос
/ 23 февраля 2012

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

Предварительный просмотр макета 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 Ответ

1 голос
/ 12 января 2013

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

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

...