Как использовать фигуру, которую можно рисовать вместе с изображением?

У меня возникли трудности с тем, чтобы иметь как закругленный угол, так и фоновое изображение в моем LinearLayout.

Я знаю, что могу получить закругленный угол, используя XML для рисования формы, но если я поставлю фигуру, которую можно нарисовать, в качестве фона моего LinearLayout с android:background=@drawable/rounded_corner, я не смогу назначить какое-либо изображение для использования в качестве фона.

Как я могу получить как закругленный угол, так и фоновое изображение в моем LinearLayout? Любая помощь будет оценена по достоинству. Спасибо!


person Surya Wijaya Madjid    schedule 07.06.2011    source источник


Ответы (2)


Вы можете использовать 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>
person woodshy    schedule 07.06.2011
comment
Спасибо за ответ, woodshy :) Я попробовал, но это не работает так, как я ожидал. Они просто накладываются друг на друга, а угловая часть фонового изображения все еще видна за закругленной угловой формой. Любая идея, как заставить его использовать фоновое изображение, сохраняя форму закругленного угла? - person Surya Wijaya Madjid; 07.06.2011
comment
так почему нельзя создать изображение со скругленными углами? - person woodshy; 07.06.2011
comment
Это был бы самый простой способ, но я хочу избежать этого, если смогу. Дело в том, что изображение сделано кем-то другим, и если это возможно, я хочу сделать это, не прося его изменить само изображение. - person Surya Wijaya Madjid; 07.06.2011
comment
Это сработало для меня, так как я хотел, чтобы изображение было внутри круга, круг представляет собой форму xml с 30dp для всех углов, а изображение просто рисуется. - person speedynomads; 23.07.2013
comment
Я обнаружил, что первый слой (форма) увеличивается при добавлении второго слоя (изображения). Изображение меньше формы. Это нормально? Как я могу этого избежать? - person Roar Skullestad; 12.09.2013

для тех, кто ищет другой ответ

в 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);
    }
person Alp    schedule 16.12.2014