web-dev-qa-db-ja.com

AndroidのXMLドロアブルファイルで円形を定義する方法は?

私はいくつかの問題を抱えているアンドロイドのためのXMLの形の定義のドキュメンテーションを見つけること。 XMLファイルで単色で塗りつぶされた単純な円を自分のレイアウトファイルに含めるように定義したいと思います。

残念ながら、Android.comのドキュメントにはShapeクラスのXML属性が含まれていません。円を描くには ArcShape を使うべきだと思いますが、円から円を描くために必要なサイズ、色、角度の設定方法については説明がありません。

580
Janusz

これはAndroidのドロウアブルとしての単純な円です。

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

   <solid 
       Android:color="#666666"/>

   <size 
       Android:width="120dp"
        Android:height="120dp"/>
</shape>
1295
Arefin

これをビューの背景として設定

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <stroke
        Android:width="1dp"
        Android:color="#78d9ff"/>
</shape>

enter image description here

黒丸の場合:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <solid
        Android:color="#48b3ff"/>
</shape>

enter image description here

ストロークで安定:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <solid Android:color="#199fff"/>
    <stroke
        Android:width="2dp"
        Android:color="#444444"/>
</shape>

enter image description here

:これらの例でovalname__図形を円として表示するには、この図形を背景として使用しているというビューを正方形にするか、またはheightname__およびwidthname__プロパティを設定する必要があります。タグを同じ値にします。

675

単純円のコード

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="oval">
        <solid Android:color="#9F2200"/>
        <stroke Android:width="2dp" Android:color="#fff" />
        <size Android:width="80dp" Android:height="80dp"/>
</shape>
89
Ravi Makvana

Android SDKサンプルを調べてください。 ApiDemosプロジェクトにはいくつかの例があります。

/ ApiDemos/res/drawable /

  • black_box.xml
  • shape_5.xml

グラデーションを塗りつぶした円の場合、これは次のようになります。

 <?xml version = "1.0" encoding = "utf-8"?> 
 <shape xmlns:Android = "http://schemas.Android.com/apk/res/Android" Android:shape = "oval"> 
 <グラデーションAndroid:startColor = "#FFFF0000" Android:endColor = "#80FF00FF" 
 Android:angle = "270" /> </shape> 
 
46
goosemanjack

以下のように VectorDrawable を使うことができます。

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:width="200dp"
    Android:height="200dp"
    Android:viewportHeight="64"
    Android:viewportWidth="64">

    <path
        Android:fillColor="#ff00ff"
        Android:pathData="M22,32
        A10,10 0 1,1 42,32
        A10,10 0 1,1 22,32 Z" />
</vector>

上記のxmlは次のようにレンダリングされます。

enter image description here

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

    <!-- fill color -->
    <solid Android:color="@color/white" />

    <!-- radius -->
    <stroke
        Android:width="1dp"
        Android:color="@color/white" />

    <!-- corners -->
    <corners
        Android:radius="2dp"/>
</shape>
21
Ashana.Jackol

これはプレマテリアルのための簡単なcircle_background.xmlです。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true">
        <shape Android:shape="oval">
            <solid Android:color="@color/color_accent_dark" />
        </shape>
    </item>
    <item>
        <shape Android:shape="oval">
            <solid Android:color="@color/color_accent" />
        </shape>
    </item>
</selector>

ボタンのレイアウト定義で属性'Android:background="@drawable/circle_background"を使用できます。

16
kip2

circle がこのようにしたい場合

enter image description here

以下のコードを使ってみてください。

<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/white" />
<stroke
    Android:width="1dp"
    Android:color="@Android:color/darker_gray" /></shape>
9
<?xml version="1.0" encoding="utf-8"?>
<shape 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">

    <stroke
        Android:width="10dp"
        Android:color="@color/white"/>

    <gradient
        Android:startColor="@color/red"
        Android:centerColor="@color/red"
        Android:endColor="@color/red"
        Android:angle="270"/>

    <size 
        Android:width="250dp" 
        Android:height="250dp"/>
</shape>
7
TeeTracker

あなたはこれを試すことができます -

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="ring"
    Android:innerRadiusRatio="700"
    Android:thickness="100dp"
    Android:useLevel="false">

    <solid Android:color="#CCC" />

</shape>

また、Android:thicknessを調整することによって円の半径を調整することができます。

enter image description here

2
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval">
            <solid Android:color="@color/text_color_green"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size Android:width="250dp" Android:height="250dp"/>
        </shape>
    </item>
</selector>
0
varun setia

res/drawble/circle_shape.xml

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

        <shape Android:shape="oval">
            <solid Android:color="#e42828"/>
            <stroke Android:color="#3b91d7" Android:width="5dp"/>
            <!-- Set the same value for both width and height to get a circular shape -->
            <size Android:width="250dp" Android:height="250dp"/>
        </shape>
    </item>
</selector>

enter image description here

オンラインの例: https://code-Android-example.blogspot.com/2019/07/how-to-circle-shape-in​​-xml-drawable-Android.html

0
Tienanhvn

どういうわけか私はConstraintLayoutの中に円を描くことができませんでした、私はちょうど上の答えのどれも使うことができませんでした。

あなたが "Alt + 7"を押すと、完全にうまくいったのは、テキストが出てくる単純なTextViewです。

 <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:textColor="#0075bc"
            Android:textSize="40dp"
            Android:text="•"></TextView>
0