在Android XML中创建此形状(附图)?

时间:2016-05-22 05:55:25

标签: android xml android-layout android-studio shape

我知道这个问题非常简短,但我如何在XML中为Android Studio项目创建这个形状?

enter image description here

似乎我可以创建一个矩形,然后从中删除一个半圆部分,但在XML中实现这种效果似乎非常困难。有人曾经这样做过吗?

2 个答案:

答案 0 :(得分:4)

使用纯xml drawables创建这样的背景总是很棘手,但可能。

我在xml创建了您需要的按钮。将此文件添加到drawable文件夹:

<强> circle.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <!-- inset - moves circle to the left-->
        <inset android:insetLeft="-150dp">
            <shape android:shape="ring"
                    android:thicknessRatio="7"
                    android:innerRadius="0dp"
                    android:useLevel="false"
                    >
                <stroke android:width="2dp" android:color="#000000"/>
                <solid android:color="#ffffff"/>
            </shape>
        </inset>
    </item>
</selector>

<强> custom_button_default.xml

<?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="#00ff00"/>
            <stroke
                    android:color="#000000"
                    android:width="2dp"/>
        </shape>
    </item>
    <item android:drawable="@drawable/circle" />
</layer-list>

<强> custom_button_pressed.xml

<?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="#dddddd"/>
            <stroke
                    android:color="#000000"
                    android:width="2dp"/>
        </shape>
    </item>

    <item android:drawable="@drawable/circle" />

</layer-list>

<强> custom_button_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/custom_button_pressed" />
    <item android:drawable="@drawable/custom_button_default"/>
</selector>

custom_button_selector drawable设置为layout中的视图背景:

<Button
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:id="@+id/button"
        android:background="@drawable/custom_button_selector"
        />

您可能需要在insetLeft中调整圈width值和按钮heightlayout。最好在values/dimens.xml中定义这些变量。

默认状态:

Default state

按下状态:

Pressed state

我在Nexus 5和Nexus 7上测试过它 - 按钮背景看起来一样。

答案 1 :(得分:0)

嗨,你可以使用转换在线工具http://www.online-convert.com/将svg转换为xml android文件后此网站http://inloop.github.io/svg2android/