时尚的圆形按钮
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);
}
}
希望这对您有所帮助。
创建圆形按钮有非常好的解决方案。 (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);
}
}
希望这对您有所帮助。