web-dev-qa-db-ja.com

画像と一緒にドローアブルの形状を使用するにはどうすればよいですか?

角丸と背景画像の両方をLinearLayoutに配置するのは難しいです。

図形描画可能なXMLを使用して丸みを帯びた角を実現できることはわかっていますが、LinearLayoutの背景としてAndroid:background=@drawable/rounded_cornerを使用して図形描画可能な図形を配置すると、画像として割り当てられないため、バックグラウンド。

LinearLayoutで背景画像と角丸の両方を取得するにはどうすればよいですか?任意の助けいただければ幸いです。ありがとう!

35

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>
34
woodshy

別の答えを求めている人のために

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>

oncreateまたは一般

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

関数として

 @Override
    public Drawable getDrawable(int position) {

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