2017-01-18 21 views
0

我需要在我的项目中使用几个不同设计的按钮。所以我使用可绘制的形状来制作自定义按钮。什么是高效和结构化的方式来使用android可绘制形状?

比方说,我需要一个圆角和绿色背景的按钮。所以我创建了一个形状“gree_round_button.xml”,这工作正常。但是,然后我需要另一个相同样式的按钮,只是背景颜色会不同,因为我需要创建另一个xml文件,比如“colorName_round_button.xml”?

我为了理解目的而保持简单,但对于不同的按钮可能有很多常见的风格可能只是一个或两个属性的不同。有什么办法可以跳过为同一设计创建多个文件?有什么方法可以用来扩展任何形状,并且可以将通过颜色,背景颜色作为参数? 可能是这样的“button.xml”这个形状将接受一个参数的颜色,我可以使用这个形状为我想要使用的每个按钮,只是通过不同的颜色作为参数。

在网站的CSS:我可以做这样的事情

.button {border: 1px solid #ddd;border-radius:5px;padding:20px;} 
.button.green {background:green;} 

有没有简单的方法做这样的事情。 谢谢。

+0

你可以'扩展View'并通过任何你想要的颜色参数。 –

+0

我一定会检查一下。谢谢 –

回答

2

你应该看看backgroundTint这将允许你使用相同的drawable,但覆盖它与不同的颜色。

因此,例如,你可以有一个白色圆圈的bg_circle.xml。然后使用色调来改变它的颜色,并将单独的图标作为src。

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_check_mark" 
    android:background="@drawable/bg_circle" 
    android:backgroundTint="@color/red" 
    /> 

这样,你只需要拥有一个round_button.xml,你可以作为一个后台所有按钮使用,并根据需要使用不同的颜色着色它。每个图标的内容可以自己绘制。

的四个按钮下面分别只有3绘项目取得:

enter image description here

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 
<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorAccent" 
    /> 
+0

非常感谢您的解释。只是标记正确答案:) –