2011-06-07 48 views
35

我有这个困难在我的LinearLayout有圆角和背景图像。如何使用可与图像一起绘制的形状?

我知道我可以通过使用形状绘制XML achive圆角,但是如果我把形状绘制为我LinearLayoutandroid:[email protected]/rounded_corner的背景,然后我不能将任何图像作为背景。

我怎样在LinearLayout中获得一个带有背景图像的圆角? 任何帮助,将不胜感激。谢谢!

回答

32

您可以使用LayerDrawable,根据需要可以包含尽可能多的图层(形状或图像)。您可以创建它作为资源或编程。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/rounded_corners" android:id="@+id/rounded_corners"/> 
    <item android:drawable="@drawable/additional_image" android:id="@+id/additional_image" /> 
</layer-list> 
+2

谢谢你的回答woodshy :) 我试过了,但它不像我所期望的那样工作。它们只是放在彼此的顶部,背景图像的角落部分在圆角形状的后面仍然可见。 任何想法如何让它使用背景图片,同时保持圆角的形状? – 2011-06-07 11:01:48

+0

那么为什么你不能创建一个圆角的图像? – woodshy 2011-06-07 11:43:07

+3

这将是最简单的方法,但如果可以的话,我想避免这种情况。 事实上,图像是由其他人制作的,如果可能的话,我希望不需要他改变图像本身。 – 2011-06-07 13:05:20

3

对于那些谁在OnCreate或一般

String[] ulkeAdlari =getResources().getStringArray(R.array.ulke_isimleri); 
TypedArray ulkeGorselleri = getResources().obtainTypedArray(R.array.ulke_gorselleri); 

寻求不同的答案

在XML

<string-array name="ulke_isimleri"> 
    <item>kan</item> 
    <item>kebapeli</item> 
</string-array> 

<array name="ulke_gorselleri"> 
    <item>@drawable/kan1</item> 
    <item>@drawable/esyalar_kebap_adana</item> 
</array> 

的功能

@Override 
    public Drawable getDrawable(int position) { 

     Drawable[] drawable = new Drawable[] { 
       ulkeGorseli.getDrawable(position ) 
       , 
       new TextDrawable(ulkeAdlari[ position ] ) 
     }; 
     return new LayerDrawable(drawable); 
    }