【问题标题】:how to make oval button in android?如何在android中制作椭圆形按钮?
【发布时间】:2025-12-13 13:10:01
【问题描述】:

我在网站上看到了这个按钮,我想在 xml 中重新创建它。但是,我无法让尺寸正确匹配它。下面是我到目前为止的代码,但它与形状不完全匹配。希望有人能帮忙!

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/white"></solid>
    <corners
        android:radius="600dp" />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
    <stroke
        android:width="3px" android:color="@color/salmon_main"/>
</shape>

【问题讨论】:

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


    【解决方案1】:

    This question already asked click there to check

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
      <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="30dp"
        android:radius="60dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="30dp" />
    
      <solid android:color="#CFCFCF" />
    
      <padding
        android:bottom="0dp"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp" />
    
      <size
        android:height="60dp"
        android:width="270dp" />
    
    </shape>
    

    【讨论】:

    • 我不是那个删掉它的人。
    【解决方案2】:

    试试这个,

        <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle" >
    
            <corners android:radius="17dp" />
    
            <gradient
                android:angle="90" />
            <solid android:color="#FFFFFF"/>
            <stroke
                android:width="2dp"
                android:color="#FFFFFF" />
    
        </shape>
    

    【讨论】:

    • 我复制粘贴了您的代码,但您的形状在 xml 视图中实际上是椭圆形的。和我上面发布的图片完全不同。
    • Mohit Singh(上图)使用可绘制的 xml 文件回答了这个问题
    【解决方案3】:

    在drawable文件夹中创建一个XML文件:

    oval_background.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="oval" >
        <gradient 
            android:startColor="#6586F0"
            android:centerColor="#D6D6D6"
            android:endColor="#4B6CD6"
            android:angle="90"/>
    </shape>
    

    【讨论】:

    • 我试过你的代码,但在 xml 视图中它只显示一个矩形,它的角略微圆润,而不是特别是我上面制作的形状。
    【解决方案4】:

    试试这个,这个也是有涟漪效果的

    <?xml version="1.0" encoding="utf-8"?>
    <ripple
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/press">
        <item>
            <shape
                android:shape="rectangle">
                <solid android:color="#FF9800" />
                <corners android:radius="30dp" />
                <stroke android:width="1dip" android:color="#FF9800" />
                <gradient android:angle="-90" android:startColor="#FF9800" android:endColor="#FF9800"  />
            </shape>
        </item>
        <item android:state_focused="true">
            <shape android:shape="rectangle"  >
                <corners android:radius="30dp" />
                <stroke android:width="1dip" android:color="#FF9800" />
                <solid android:color="#FF9800"/>
            </shape>
        </item>
        <item >
            <shape android:shape="rectangle"  >
                <corners android:radius="30dp" />
                <stroke android:width="1dip" android:color="#FF9800" />
                <gradient android:angle="-90" android:startColor="#FF9800" android:endColor="#FF9800" />
            </shape>
        </item>
    </ripple>
    

    【讨论】: