49 votes

Comment définir l'arrière-plan d'une forme en xml ?

Je viens de créer un cercle rouge à l'aide des formes 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>

C'est vraiment sympa, mais je n'arrive pas à définir la couleur d'arrière-plan du cercle à ma couleur. J'ai essayé android:background="#FFFFFF" mais il apparaît toujours en noir dans ma mise en page. Comment puis-je définir l'arrière-plan de la forme ci-dessus ?

92voto

Luksprog Points 52767

Je pense qu'un layer-list pourrait vous aider :

<?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>

13voto

gnB Points 760
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="12dp" />
    <solid android:color="#ffffff" />
    <stroke
        android:width="1dp"
        android:color="@android:color/black" />

</shape>

3voto

Harpreet Points 894

Je ne fais qu'ajouter une recherche utile en guise de réponse. Supposons que vous ayez un shape comme la réponse décrite par @GeneBo et vous êtes impatient de réutiliser cette forme, mais avec une autre forme. solid couleur. Ainsi, tout ce que vous devez faire dans votre widget est :

android:background="@drawable/your_shape_to_reuse"
android:backgroundTint="@color/new_background_color_you_need"

1 votes

Vous pouvez également ajouter android:backgroundTintMode="screen" ou un autre mode.

-1voto

Kaediil Points 3049

Ok, qu'en est-il de ceci ?

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

0 votes

J'utilise un TextView, malheureusement, j'ai besoin de mettre du texte à l'intérieur.

1 votes

Je viens de poster une mise à jour qui fonctionne en quelque sorte, mais le cercle est malheureusement coupé en haut et en bas. Il faudrait que je joue un peu plus longtemps pour qu'il s'étende complètement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X