时尚的圆形按钮

Styleable round Button

创建圆形按钮有非常好的解决方案。 (How to make a round button?)

然而,其中大多数似乎都对按钮 xml 文件中的颜色进行了硬编码。

有没有办法创建一个 configurable/styleable 颜色的圆形按钮? (我不喜欢为我可能使用的每个颜色按钮创建一个 xml 文件的想法)

理想情况下,我会在 layout.xml 中使用我的 RoundButton 时应用颜色,就像视图一样。

注意:我的Button需要包含文字,所以也可以是TextView。

谢谢

如果您想要一个带有圆角的简单按钮,您可以直接使用此处的 CardView:round corners。您可以以编程方式设置 CardView 背景颜色并保持波纹及其 foreground=?selectableitembackground

对于圆形按钮,您可以使用此库:circle button

定义 xml 没有颜色(xml 来自你的 link):

roundedbutton.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:bottomRightRadius="8dip"
    android:bottomLeftRadius="8dip"
    android:topRightRadius="8dip"
    android:topLeftRadius="8dip"/>

button.xml:

<Button
   android:layout_height="50dp"
    android:layout_width="90dp"
    android:id="@+id/button"
    android:text="Button"
    android:background="@drawable/roundedbutton"/>

你可以这样做:

 button.getBackground().setColorFilter(Color.parseColor("#bbe618"), PorterDuff.Mode.SRC_IN);

结果:

您可以创建这样的函数,并向其传递视图和颜色。

/**
 * 
 * @param v: Can be any view like Button, Textview, Linearlayout,etc
 * @param color: Background color which you want
 */
public static void setRoundedBackGround(View v, int color)
{
    GradientDrawable drawable = new GradientDrawable();
    drawable.setShape(GradientDrawable.RING);
    drawable.setStroke(3, Color.BLACK); // You can set any border color 

    if(color == 0)
    {
        drawable.setColor(Color.TRANSPARENT);
        v.setBackgroundDrawable(drawable);
    }
    else
    {
        drawable.setColor(color);
        v.setBackgroundDrawable(drawable);
    }
}

希望这对您有所帮助。