Кнопки изображений 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)