1

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

  • mdpi 800x480 分辨率的背景: 在此处输入图像描述
  • hdpi 800x480 分辨率的背景: 在此处输入图像描述

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

 ![enter image description here][3]

当我将这些图像设置为我的布局背景时,它们在 mdpi 屏幕上工作,但在 hdpi 上却没有。hdpi 上的背景比它设计的要长。以下是截图:

  • 在 mdpi 屏幕上很好:

    在此处输入图像描述

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

    在此处输入图像描述

这是我的代码:

    <?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>

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

谢谢。

4

1 回答 1

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>
于 2013-10-21T04:54:04.923 回答