Android图像按钮在不同的屏幕上显示不同

时间:2014-05-28 04:58:52

标签: android xml android-layout imagebutton

我使用下面的XML文件进行Android活动。它显示在Nexus 7上很好,因为附带的图像显示,但在像Galaxy Nexus这样的小屏幕上,它并不是那么好。有人可以给我一步一步的答案,如何解决这个问题非常烦人。我知道使用XDHPI,HDPI ....资源文件夹支持多种屏幕尺寸。如果我在文件夹中放入正确的图像尺寸,图像是否会自行修正,我应该使用哪些尺寸来调整图像大小?

这里展示的是我所谈论的一个例子:

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

目前,所有文件均采用125 x 125尺寸的可绘制HDPI,非常感谢帮助。

<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 个答案:

答案 0 :(得分:0)

在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)

答案 1 :(得分:0)

如果您想支持多个屏幕或想要让您的应用与所有屏幕尺寸兼容,那么首先要记住的是,永远不要使用硬编码的宽度和高度值。

避免这种情况:

android:layout_width="201dp"

android:layout_height="123dp"

使用:

        android:layout_width="wrap_content"  or "match_parent"

        android:layout_height="wrap_content"  or "match_parent"

有关详细信息,请参阅此处:阅读this

为了支持所有屏幕尺寸,您必须阅读support multiple screen size

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" />