我想让我的按钮如下所示。您能告诉我,如何为以下内容制作可绘制的 xml 文件吗?
喜欢这张图片
只需使用带有属性MaterialButton
的材料组件库中的标准。
就像是:shapeAppearanceOverlay
<com.google.android.material.button.MaterialButton
app:shapeAppearanceOverlay="@style/ButtomShapeArrow"
../>
和:
<style name="ButtomShapeArrow">
<item name="cornerFamily">cut</item>
<item name="cornerSize">50%</item>
</style>
使用Jetpack 组合:
Button(
onClick = { /* do something */},
shape = CutCornerShape(50)
){
Text ("SHAPE")
}
你可以通过在你的drawable中创建一个drawable XML文件来做到这一点
背景.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="27dp"
android:height="24dp"
android:viewportHeight="628.0"
android:viewportWidth="726.0">
<path
android:fillColor="#00ffffff"
android:pathData="m723,314c-60,103.9 -120,207.8 -180,311.8 -120,0 -240,0 -360,0C123,521.8 63,417.9 3,314 63,210.1 123,106.2 183,2.2c120,0 240,0 360,0C603,106.2 663,210.1 723,314Z"
android:strokeColor="#ffffff"
android:strokeWidth="20" />
</vector>
然后在您的布局文件中,您可以添加如下背景
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#652ef0"
android:orientation="vertical"
tools:context="com.MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/background"
android:gravity="center"
android:text="Hello World!" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:gravity="center"
android:text="Hello World 2!" />
</LinearLayout>
如果只是形状,也许矢量可绘制就足够了,但要绘制形状、图标和文本,最好创建自己的 Button 类并在覆盖的 onDraw 中绘制东西。可以使用路径绘制形状。