web-dev-qa-db-fra.com

Cercle transparent avec bordure

J'essaie de créer un cercle avec seulement une bordure à l'aide de XML dans Android:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval" >

<stroke Android:width="1dp"
    Android:color="#000000"/>

</shape>

Le code que j'ai utilisé est affiché ci-dessus. Cependant, je reçois un disque solide et pas une bague. Je voudrais obtenir la sortie en utilisant simplement XML et non canvas. Qu'est-ce que je fais mal?

Merci.

EDIT: Cela a fonctionné grâce à la réponse ci-dessous. Heres mon code final:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:innerRadius="0dp"
    Android:shape="ring"
    Android:thicknessRatio="1.9"
    Android:useLevel="false" >

    <solid Android:color="@Android:color/transparent" />

    <size Android:width="100dp"
     Android:height="100dp"/>

    <stroke Android:width="1dp"
    Android:color="#FFFFFF"/>

</shape>
55
Anirudh

Essayez quelque chose comme ça

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:innerRadius="0dp"
    Android:shape="ring"
    Android:thicknessRatio="2"
    Android:useLevel="false" >
    <solid Android:color="@Android:color/transparent" />

    <stroke
        Android:width="2dp"
        Android:color="@Android:color/darker_gray" />
</shape>

Mise à jour: fait Android:thicknessRatio="2" pour donner le cercle complet (avec Nexus 5 - Lollipop)

144
stinepike

utilise ça ça va marcher

<?xml version="1.0" encoding="utf-8"?>  
     <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"                                                                                                                                                     
   Android:shape="oval" >

<gradient
    Android:centerX=".6"
    Android:centerY=".40"
    Android:endColor="@Android:color/transparent"
    Android:gradientRadius="20"
    Android:startColor="@Android:color/transparent"
    Android:type="radial" />

<stroke
    Android:width="1dp"
    Android:color="#FFFFFF" />

<size
    Android:height="100dp"
    Android:width="100dp" />

</shape>
25
anupam sharma

Creux 

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:shape="oval">
        <stroke
            Android:width="1dp"
            Android:color="@color/indicator_unselected" />
    </shape>

Plein

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <corners Android:radius="100dp" />
    <solid Android:color="@Android:color/white" />
</shape>
9
Hitesh Sahu

Si vous pouvez utiliser Vector drawables, essayez ceci

<vector Android:height="24dp" Android:viewportHeight="512.0"
    Android:viewportWidth="512.0" Android:width="24dp" xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <path Android:fillColor="#FFFFFF" Android:fillType="evenOdd"
        Android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z"
        Android:strokeColor="#00000000" Android:strokeWidth="1"/>
</vector>
2
Hector
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.Android.com/tools"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval" >

            <stroke
                Android:width="4dp"
                Android:color="@color/colorPrimaryDark" />
            <corners Android:radius="0dp" />
        </shape>
    </item>
    <item
        Android:top="1dp"
        Android:bottom="1dp"
        Android:left="1dp"
        Android:right="1dp">

        <shape Android:shape="oval">
            <solid Android:color="@color/colorRed" />
            <size Android:height="@dimen/_100sdp"
                Android:width="@dimen/_100sdp"></size>
        </shape>

    </item>

</layer-list>
1
Mohsinali

Vous pouvez utiliser la valeur intégrée d'Android pour transparente en tant que @Android:color/transparent ou utiliser #0000 ou #00000000

pour commencer ci-dessus pour 4 chiffres, le premier correspond à alpha et dans la valeur à 8 chiffres, les deux premiers chiffres correspondent à alpha.

Lorsque vous n'indiquez que 3 ou 6 chiffres de couleur par rapport à la valeur alpha par défaut, il vous suffit de passer à 4 ou 8 chiffres pour définir cette valeur alpha

1
Pratik

Si vous définissez la couleur sur #00000000, le résultat sera transparent. Vous voudriez le faire de cette façon si vous vouliez le changer dans le futur du développement. Si vous vouliez que ce soit rouge et partiellement transparent par exemple, ce serait #ff000088 Les deux derniers chiffres sont l'opacité . Je le fais de cette façon pour faciliter les modifications futures.

0
Jack Papel
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval" >

        <gradient
            Android:endColor="@Android:color/transparent"
            Android:gradientRadius="20"
            Android:startColor="@Android:color/transparent" />

        <stroke
            Android:width="1dp"
            Android:color="#d9d9d9" />

        <size
            Android:height="100dp"
            Android:width="100dp" />
        </shape>
    </item>

    <item
        Android:bottom="1dp"
        Android:left="1dp"
        Android:right="1dp"
        Android:top="1dp">
        <shape Android:shape="oval" >

            <gradient
                Android:endColor="@Android:color/transparent"
                Android:gradientRadius="20"
                Android:startColor="@Android:color/transparent" />

            <stroke
                Android:width="1dp"
                Android:color="#b3b3b3" />

            <size
                Android:height="100dp"
                Android:width="100dp" />
        </shape>
    </item>
</layer-list>
0
Palak Jain

L'effet de trait peut être obtenu en dessinant un ovale transparent Avec le trait d'une couleur requise (# 000 dans l'exemple):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <solid Android:color="@Android:color/transparent" />
    <stroke
        Android:width="1dp"
        Android:color="#000" />
    <size
        Android:width="40dp"
        Android:height="40dp" />
</shape>
0
Alex Burov