Dip в xml не работает при разной плотности экрана в симуляторе Android - PullRequest
0 голосов
/ 30 марта 2011

Я тестирую multi dpi в Android, и XML-файл макета выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@drawable/new_album_bg">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
    <RelativeLayout android:gravity="center"
        android:paddingTop="400dip" android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <EditText android:background="@drawable/name_text_bg"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:gravity="center" />
    </RelativeLayout>
</RelativeLayout>

Когда я запускаю его на симуляторе 480x800 mdpi (160) (он масштабируется до 7 дюймов), он работает нормально, но на симуляторе 480x800 hdpi он передает EditText вниз к нижней части экрана, почти 600 пикселей, что 400dip х 240/160? И, кажется, нет разницы с размером экрана, даже я масштабировал его до 4 дюймов. Как сделать так, чтобы отступы работали при разной плотности экрана? Большое спасибо!

1 Ответ

1 голос
/ 30 марта 2011
How to let padding work under different screen density? 

вы можете создать разную разметку xml с разными отступами в разных папках типа

res/layout-mdpi 
res/layout-hdpi

Тогда андроид выберет соответствующую разметку xml
About dp (Dip)
dp гарантирует, что вид будет иметь соответствующий размер на экране текущего устройства.Например, представление с layout_width="100dp" будет иметь ширину 100 pixels на дисплее HVGA@160 density и 150 pixels на дисплее WVGA@240 density, но представление будет занимать примерно то же физическое пространство.

Для получения более подробной информации см. Поддержка нескольких экранов

...