Экран по-разному отображается на разных устройствах, даже с падением и одинаковым разрешением - PullRequest
0 голосов
/ 16 сентября 2011

Хорошо, ребята. Проблема: у меня есть макет, который должен отображаться внутри «ящиков», встроенных в фоновое изображение. Итак, точная компоновка обязательна. Я установил макет, и он отлично смотрелся на эмуляторе и Samsung Galaxy S, но когда я бросил его на Droid X, взгляды сместились вверх. Проблема в том, что оба телефона считаются средними экранами с HDPI. Я, очевидно, не могу использовать разные папки макета, чтобы исправить это. В манифесте «anyDensity» установлено значение false. Опробовал трюк minSDK 3. Мои ресурсы извлекаются из папки drawable-hdpi, но это не должно иметь значения. Единственное, что я могу себе представить, - это конкретные значения маржи, которые я даю (даже в DIP). Но я понятия не имею, как добиться макета с представлениями в определенных местах без этого. Любая помощь, пожалуйста? Commonsware, где ты на этом. Спасибо, ребята.

Edit: Чем больше я об этом думаю, тем больше понимаю, что ошибался в своих мыслях. (Прошло много времени с тех пор, как я написал код для Android) DIP делает именно то, что и должно быть. Размеры на всех экранах, на которых я их ставлю, одинаковы, но я хочу, чтобы изображение увеличивалось с размером экрана. Поэтому, если экран больше, поля и интервал растут вместе с экраном. По сути, мне нужен fill_parent для всего моего макета, но я не могу использовать это с точным макетом. Есть идеи?

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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/background" >

    <TextView
        android:layout_height="wrap_content"
        android:layout_width="150dp"
        android:layout_marginTop="20dip"
        android:layout_marginRight="10dip"
        android:layout_gravity="right"
        android:gravity="center_horizontal"
        android:text="Text Here"
        android:textSize="15dip"
        android:textColor="#253B85" />

    <TextView
        android:id="@+id/code"
        android:layout_height="wrap_content"
        android:layout_width="150dp"
        android:layout_marginTop="10dip"
        android:layout_marginRight="10dip"
        android:layout_gravity="right"
        android:gravity="center_horizontal"
        android:text="5D6"
        android:textSize="9dip"
        android:textColor="#000000" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/icon"
            android:layout_width="90dip"
            android:layout_height="90dip"
            android:layout_marginLeft="20dip"
            android:layout_marginTop="10dip"/>

        <TextView
            android:id="@+id/name"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_marginTop="19dip"
            android:layout_marginRight="20dip"
            android:layout_toRightOf="@id/icon"
            android:layout_alignParentRight="true"
            android:gravity="right"
            android:text="Really Long Name"
            android:textSize="17dip"
            android:textColor="#253B85" />

        <TextView
            android:id="@+id/importantInfo"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_marginTop="5dip"
            android:layout_marginRight="20dip"
            android:layout_below="@id/name"
            android:layout_alignParentRight="true"
            android:gravity="right"
            android:text="50% off"
            android:textSize="30dip"
            android:textStyle="bold"
            android:textColor="#253B85" />

        <TextView
            android:id="@+id/dateLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:layout_marginTop="22dip"
            android:layout_below="@id/icon"
            android:text="date: "
            android:textColor="#253B85" />

        <TextView
            android:id="@+id/dateText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="22dip"
            android:layout_below="@id/icon"
            android:layout_toRightOf="@id/dateLabel"
            android:text=" "
            android:textColor="#253B85" />

        <TextView
            android:id="@+id/moreInfo"
            android:layout_width="fill_parent"
            android:layout_height="33dip"
            android:layout_marginLeft="22dip"
            android:layout_marginTop="3dip"
            android:layout_marginRight="24dip"
            android:layout_below="@id/dateLabel"
            android:gravity="center"
            android:maxLines="2"
            android:textSize="10dip"
            android:text=" "
            android:textColor="#253B85" />

        <ImageView
            android:id="@+id/qrIcon"
            android:layout_width="fill_parent"
            android:layout_height="106dip"
            android:layout_marginLeft="22dip"
            android:layout_marginTop="11dip"
            android:layout_marginRight="24dip"
            android:layout_below="@id/moreInfo" />

    </RelativeLayout>

    <Button
        android:id="@+id/submitButton"
        android:layout_width="160dip"
        android:layout_height="40dip"
        android:layout_marginTop="14dip"
        android:layout_gravity="center_horizontal"
        android:onClick="buttonRedeemOnClickListener"
        android:background="@drawable/button_background"
        android:text="Redeemed Coupon"
        android:textColor="#FFFFFF" />

</LinearLayout>

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Добавить в файл манифеста :::

<supports-screens android:smallScreens="true" android:resizeable="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"></supports-screens>
0 голосов
/ 26 сентября 2013

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

...