Android- hdpi屏幕背景更长

时间:2013-10-21 02:54:06

标签: android android-layout android-drawable android-screen-support

我在android中遇到了属性背景问题。我想设计一个在mdpi和hdpi屏幕密度上运行查找的布局。我有2个背景图片如下:

  • mdpi的背景为800x480分辨率:  enter image description here
  • hdpi的背景为800x480分辨率:  enter image description here

我使用draw9patch来定义内容填充,如下所示:

 ![enter image description here][3]

当我在布局的背景设置这些图像时,它们可以在mdpi屏幕上找到但在hdpi上没有找到。 hdpi的背景比它设计的更长。以下是截图:

  • 在mdpi屏幕上没问题:

    enter image description here

  • 在hdpi屏幕上显示更长(拉伸):

    enter image description here

以下是我的代码:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ui_win_background"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/activity_win_textview_congratulationText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/activity_horizontal_marginXExtraWide"
            android:gravity="center"
            android:text="CONGRATULATION!\nYOU WON!!!"
            android:textColor="#FFF"
            android:textSize="@dimen/textSize_XLarge" />

        <TextView
            android:id="@+id/activity_win_textview_percent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/activity_horizontal_marginExtraWide"
            android:gravity="center"
            android:text="50%"
            android:textColor="#BD1142"
            android:textSize="72sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/activity_win_textview_prizeName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center"
            android:text="Combo Starbucks"
            android:textColor="@color/black"
            android:textSize="@dimen/textSize_XLarge"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/activity_win_textview_prizeCode"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:layout_margin="@dimen/activity_vertical_margin"
            android:background="@drawable/statelist_textview_white_roundborder"
            android:gravity="center"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:scrollHorizontally="true"
            android:singleLine="true"
            android:text="#fsdjflsejp34230sfmwr3"
            android:textSize="@dimen/textSize_large"
            android:textStyle="italic" />

        <TextView
            android:id="@+id/activity_win_textview_prizeName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/activity_vertical_marginWide"
            android:gravity="center"
            android:text="This screen closes in"
            android:textColor="@color/black"
            android:textSize="@dimen/textSize_large" />

        <TextView
            android:id="@+id/activity_win_textview_countDown"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/activity_horizontal_margin"
            android:gravity="center"
            android:text="00:20:40"
            android:textColor="#BD1142"
            android:textSize="@dimen/textSize_large"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>

请看一下并帮我解决此问题。

感谢。

1 个答案:

答案 0 :(得分:1)

不要使用背景。 使用ImageView(使用RelativeLayout)并根据需要设置图像视图的ScaleType属性。 您可以设置一种缩放类型,以保持图像的纵横比。 此外,请注意,如果您不希望图像缩放,9patch是无用的。 9patch的全部目的是让您控制系统如何缩放图像(主要用于ui控件的按钮和背景)。

你的布局(删除了一些元素):

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
       <ImageView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:scale_type="centerInside" //Do whatever scale type you like
          android:src="background image goes here"
          />
       <LinearLayout
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"               
           android:orientation="vertical" >

           <TextView
               android:id="@+id/activity_win_textview_congratulationText"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="center_horizontal"
               android:layout_marginTop="@dimen/activity_horizontal_marginXExtraWide"
               android:gravity="center"
               android:text="CONGRATULATION!\nYOU WON!!!"
               android:textColor="#FFF"
               android:textSize="@dimen/textSize_XLarge" />

       </LinearLayout>
     </RelativeLayout>
</LinearLayout>
相关问题