Кнопки изображений Android отображаются по-разному на разных экранах

У меня есть активность Android с использованием XML-файла ниже. Как видно из прилагаемого изображения, на Nexus 7 он выглядит хорошо, но на меньшем экране, например Galaxy Nexus, он не так хорош. Может кто-нибудь, пожалуйста, дайте мне пошаговый ответ о том, как решить эту проблему, очень раздражает. Я знаю о поддержке нескольких размеров экрана, используя папки ресурсов XDHPI, HDPI .... Если я укажу правильные размеры изображений в папках, изменится ли само изображение и какие размеры я должен использовать, чтобы изменить размеры изображений?

Пример того, о чем я говорю, показан здесь:

http://oi57.tinypic.com/mhcd8n.jpg

На данный момент все файлы находятся в HDPI для рисования с размерами 125 x 125, пожалуйста, помощь очень ценится.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/textbody"
android:orientation="vertical"
tools:context=".MainActivity" >

<Button
    android:id="@+id/Appts"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="267dp"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/stock_appointment_reminder"
    android:padding="10dp"
    android:text="APPTS"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Sputum"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_below="@+id/Appts"
    android:layout_toLeftOf="@+id/Data"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/micro"
    android:padding="10dp"
    android:text="SPUTUM"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Blood_Sugars"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/Sputum"
    android:layout_toRightOf="@+id/Sputum"

    android:background="?android:attr/selectableItemBackground"
    android:drawablePadding="2dp"
    android:drawableTop="@drawable/magnifying_glass"
    android:padding="10dp"
    android:text="FEV1%"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Meds"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_alignBaseline="@+id/Blood_Sugars"
    android:layout_alignBottom="@+id/Blood_Sugars"
    android:layout_alignParentLeft="true"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/therapist"
    android:fadingEdge="horizontal"
    android:padding="10dp"
    android:text="MEDICINE"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Settings"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_alignLeft="@+id/Excercise"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/Excercise"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/application_x_desktop"
    android:padding="10dp"
    android:text="SETTINGS"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Events"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_above="@+id/Meds"
    android:layout_toRightOf="@+id/Appts"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/events"
    android:padding="10dp"
    android:text="EVENTS"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Data"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_above="@+id/Settings"
    android:layout_alignParentRight="true"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/hitchhikeguidetogalaxy3_info"
    android:padding="10dp"
    android:text="MY DATA"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Contacts"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_above="@+id/Meds"
    android:layout_alignParentRight="true"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/contacts_1"
    android:padding="10dp"
    android:text="CONTACTS"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Excercise"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Meds"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/symptom"
    android:padding="10dp"
    android:text="SYMPTOMS"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/Meals_Snacks"
    android:layout_width="201dp"
    android:layout_height="123dp"
    android:layout_above="@+id/Settings"
    android:layout_alignLeft="@+id/Events"

    android:background="?android:attr/selectableItemBackground"
    android:drawableTop="@drawable/apple"
    android:padding="10dp"
    android:text="NUTRITION"
    android:textColor="@android:color/primary_text_dark"
    android:textSize="14sp"
    android:textStyle="bold" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:src="@drawable/icon" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="18dp"
    android:text="myCF Home"
  android:fontFamily="sans-serif-thin" 
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@android:color/white"
    android:textSize="50sp"
    android:textStyle="bold" />

</RelativeLayout>

2 ответа

Решение

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

Избегайте этого:

android:layout_width="201dp"

android:layout_height="123dp"

Использование:

        android:layout_width="wrap_content"  or "match_parent"

        android:layout_height="wrap_content"  or "match_parent"

Для более подробной информации смотрите здесь: прочитайте это

Для того, чтобы поддерживать все размеры экрана, вы должны прочитать поддержку нескольких размеров экрана

В Android предусмотрены различные макеты для экранов разных размеров и различные растровые изображения для экранов малых, средних, высоких и сверхплотных экранов.

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
 res/layout-large/my_layout.xml       // layout for large screen size
 res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_image.png        // bitmap for medium density
res/drawable-hdpi/my_image.png        // bitmap for high density
res/drawable-xhdpi/my_image.png       // bitmap for extra high density

Используйте это в файле манифеста Android для поддержки нескольких экранов:

<supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true"
          android:xlargeScreens="true"
          android:anyDensity="true" />

В Android у вас есть опция hdpi, mdpi, xdpi и т.д..

папки для этого, вы должны создавать разные изображения в соответствии с разрешением вашего устройства и помещать туда свои изображения после подтверждения разрешения вашего устройства и категории плотности.

для более подробной информации, почему это произойдет, вы можете увидеть здесь

Здесь я объясняю, что некоторые диаграммы могут быть вам полезны.

Low density Small screens QVGA 240x320 (120dpi):

layout-small-ldpi (240x320)  
layout-small-land-ldpi (320x240)

Low density Normal screens WVGA400 240x400 (x432) (120dpi):

layout-ldpi  (240 x 400 )
layout-land-ldpi  (400 x 240 )

Medium density Normal screens HVGA 320x480 (160dpi):

layout-mdpi (320 x 480 )
layout-land-mdpi (480 x 320 )

Medium density Large screens HVGA 320x480 (160dpi):

layout-large-mdpi (320 x 480 )
layout-large-land-mdpi (480 x 320)

Galaxy Tab ( 240 dpi ):

layout-large  (600 x 1024) 
layout-large-land  (1024 x 600)

High density Normal screens WVGA800 480x800 (x854) (240 dpi):

layout-hdpi (480 x 800)
layout-land-hdpi (800 x 480)

Xoom (medium density large but 1280x800 res) (160 dpi):

layout-xlarge (800 x 1280)
layout-xlarge-land (1280 x 800)
Другие вопросы по тегам