我知道这个问题非常简短,但我如何在XML中为Android Studio项目创建这个形状?
似乎我可以创建一个矩形,然后从中删除一个半圆部分,但在XML中实现这种效果似乎非常困难。有人曾经这样做过吗?
答案 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
值和按钮height
,layout
。最好在values/dimens.xml
中定义这些变量。
默认状态:
按下状态:
我在Nexus 5和Nexus 7上测试过它 - 按钮背景看起来一样。
答案 1 :(得分:0)
嗨,你可以使用转换在线工具http://www.online-convert.com/将svg转换为xml android文件后此网站http://inloop.github.io/svg2android/