时尚的圆形按钮

时间:2015-02-18 00:03:18

标签: android xml button widget

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

然而,大多数这些似乎都在按钮xml文件中硬编码颜色。

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

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

注意:我的按钮需要包含文本,因此它也可以是TextView。

由于

3 个答案:

答案 0 :(得分:3)

定义没有颜色的xml(链接中的xml):

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);

结果:

enter image description here

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以制作这样的函数并将视图和颜色传递给它。

/**
 * 
 * @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);
    }
}

希望这对你有所帮助。