1

我有一个Android的属性背景的麻烦问题。我想设计一个运行在mdpi和hdpi屏幕密度上查找的布局。我有如下2背景图像:Android-在hdpi屏幕中的背景更长

  • 在800×480分辨率的背景MDPI: enter image description here
  • 在800×480分辨率的背景HDPI: enter image description here

我使用draw9patch定义内容填充如下:

![enter image description here][3] 

当我将这些图像设置为b我的布局ackground,他们在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

请勿使用背景。 使用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> 
+0

能否请您给我一些示例代码?谢谢 –

+0

看看本教程:http://etcodehome.blogspot.co.il/2011/05/android-imageview-scaletype-samples.html。 此外,我已经添加了关于您使用9patch的事实的答案。 –

+0

非常感谢。你的解决方案有效但我不明白为什么图片使用背景时更长。 –