2016-02-13 80 views
0

我设置colorButtonNormal在我styles.xml像这样:colorButtonNormal没有填满整个按钮

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    ... 
    <item name="colorButtonNormal">#33cc33</item> 
</style> 

然而,从这个属性的背景不填按钮的整个空间。

我有两个按钮。 One使用colorButtonNormal和其他使用Android的背景设置为相同的颜色:背景:

 <Button 
      android:id="@+id/afs_login_button" 
      android:layout_width="fill_parent" 
      android:layout_height="55dp" 
      android:layout_marginBottom="10dp" 
      android:textAllCaps="false" 
      android:text="Button" 
      android:textColor="#FFF" /> 

     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="55dp" 
      android:background="#33cc33" 
      android:id="@+id/guest_login" 
      android:text="Button" 
      android:textColor="#FFF" /> 

而下面是结果在Android Studio的预览窗格:

enter image description here

,你可以看,蓝色轮廓是按钮,绿色背景不占据整个空间。但是,如果我专门设置了android:background,它会填充整个空间。任何想法为什么?

回答

0

与默认按钮一起使用的背景可绘制被填充。点击区域大于实际(可见)按钮大小,这就是你在UI检查器中看到的。

设置一种颜色作为背景只会填补按钮的整个范围,使似乎更大的按钮。点击区域仍然相同。这是因为颜色转换为ColorDrawable

您可以使用tint更改可绘制的颜色—这可以让您更改颜色,但保留按钮样式。

+0

不幸的是,这产生了与使用colorButtonNormal – user1282637

+0

@ user1282637相同的结果你是否真的想让默认按钮被单色着色并像第二个例子那样填充整个空间? –

+0

我希望它具有与使用colorButtonNormal相同的行为,但颜色填充背景。即它保持它的选择器状态和棒棒糖+上的涟漪效应(这就是为什么我不能仅仅使用android:background) – user1282637