如何在Android中制作丸形按钮?

sta*_*ext 4 user-interface android button android-drawable

我不知道该怎么称呼这个......也许是药丸.谷歌搜索圆角是很多人想要一个圆角矩形按钮的帖子.这有点不同,但更像是2个圆圈和一个矩形,我试图将其绘制成.

我想制作一个按钮形状像下面的第一个图像,但在其中使用文本和图标图像在Android上使用xml drawable背景:

我试过这看起来不错,但如果按钮长度不同,它不会缩放,你最终得到一个矩形和其他一些奇怪的东西.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:left="40dp" android:top="0dp" android:bottom="0dp">

        <shape android:shape="oval" >
            <solid android:color="#666666"/>
            <size android:width="40dp" android:height="40dp"></size>

        </shape>

    </item>

    <item android:left="20dp" android:right="20dp">
        <shape android:shape="rectangle" >
            <solid android:color="#666666"/>
            <size android:width="20dp" android:height="20dp"></size>
        </shape>


    </item>

    <item android:right="40dp">
        <shape android:shape="oval" >
            <solid android:color="#666666"/>
            <size android:width="40dp" android:height="40dp"></size>

        </shape>

    </item>


</layer-list>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我也试图像这样创建我的xml drawable:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <solid android:color="#666666" />

            <corners android:radius="20dp"/>
            <size android:height="20dp" android:width="60dp"></size>
        </shape>
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

在此输入图像描述

我看过这个人的例子但是当我做他做的事情时,我的结果并没有完全圆润.它们更像是上面的第二张图片.

Pah*_*omi 9

您可以尝试将以下代码保存到drawable(例如pill_bg.xml):

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:shape="rectangle">

    <corners android:radius="120dp" />

    <solid android:color="@color/white" />

    <stroke
        android:width="1dp"
        android:color="#efefef" />

    <size
        android:width="300dp"
        android:height="120dp" />

</shape>
Run Code Online (Sandbox Code Playgroud)

看看尺寸部分和半径.然后将drawable应用于您的视图,例如:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:background="@drawable/pill_bg" />
Run Code Online (Sandbox Code Playgroud)

如您所见,您的视图可以有不同的大小,背景将缩放.


Car*_*mer 7

这可以针对任何视图背景正确调整大小。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <corners android:radius="1000dp" />

    <solid android:color="@android:color/holo_red_dark" />
</shape>
Run Code Online (Sandbox Code Playgroud)


pum*_*e65 6

Material Components Android 库v1.1.0-beta01 开始,您可以使用MaterialButtonshapeAppearance样式轻松定义药丸按钮,该按钮不需要您事先知道按钮的高度或依靠猜测足够高的半径值到按钮一侧的中间。

简单地定义一个这样的样式:

<style name="PillShapeAppearance">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
</style>
Run Code Online (Sandbox Code Playgroud)

MaterialButton像这样设置它:

<com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ...
        app:shapeAppearanceOverlay="@style/PillShapeAppearance"
        />
Run Code Online (Sandbox Code Playgroud)

我看过的每个其他答案都遗漏了关键是设置cornerSize一个百分比值,以便正确应用它支持的分数值。


use*_*504 -3

好吧,您可以在任何设计程序中制作该按钮,也可以制作一个类似的按钮,使其看起来像是被按下的,然后您制作一个可绘制的选择器并将其分配给按钮背景。这\xc2\xb4s就是我做非常棒按钮的方式

\n