Как установить фон фигуры в xml?

Я только что создал красный круг, используя фигуры Android:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="4"
    android:shape="ring"
    android:thicknessRatio="9"
    android:useLevel="false" >

     <solid android:color="#FF0000" />

    <size
        android:height="48dip"
        android:width="48dip" />

</shape>

Это действительно круто, но я не могу установить цвет фона круга на свой цвет. Я попробовал android:background="#FFFFFF", но в моем макете он всегда кажется черным. Как я могу установить фон вышеуказанной фигуры?


person Waza_Be    schedule 13.02.2012    source источник


Ответы (3)


Я думаю, что layer-list может вам помочь:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#ffffff" />
        </shape>
    </item>
    <item>
        <shape
            android:innerRadiusRatio="4"
            android:shape="ring"
            android:thicknessRatio="9"
            android:useLevel="false" >
            <solid android:color="#FF0000" />
            <size
                android:height="48dip"
                android:width="48dip" />
        </shape>
    </item>

</layer-list>
person user    schedule 13.02.2012

Я просто добавляю полезные исследования в качестве ответа. Предположим, у вас есть shape в качестве ответа, описанного @GeneBo, и вы с нетерпением ждете повторного использования этой формы, но с другим цветом solid. Итак, все, что вам нужно сделать в вашем виджете, это:

android:background="@drawable/your_shape_to_reuse"
android:backgroundTint="@color/new_background_color_you_need"
person Harpreet    schedule 14.07.2020
comment
Вы также можете добавить android:backgroundTintMode="screen" или какой-либо другой режим. - person Mike Hanafey; 14.05.2021

Хорошо, как насчет этого?

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:background="#FFFFFF">
<TextView android:text="Foo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:gravity="center"
    android:background="@drawable/red_circle"/>
    </LinearLayout>


</LinearLayout>
person Kaediil    schedule 13.02.2012
comment
Я использую TextView, к сожалению, мне нужно поместить текст внутри - person Waza_Be; 13.02.2012
comment
Я только что опубликовал обновление, которое работает, но, к сожалению, круг обрезается сверху и снизу. Я должен был бы играть еще немного, чтобы полностью расширить его. - person Kaediil; 13.02.2012