2014-02-25 40 views
4

我想创建圆角按钮。这是我的尝试:圆角按钮:我错在哪里

我已经定义按钮的背景绘制button_bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_enabled="false" 
     android:drawable="@color/grey"> 

     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 
    </item> 


    <item 
     android:state_pressed="true" 
     android:state_enabled="true" 
     android:drawable="@color/dark_grey" 
    > 
     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 
    </item> 


    <item 
     android:state_enabled="true" 
     android:drawable="@color/blue" 
    > 
     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 

    </item> 
</selector> 

然后,我把它应用到我的按钮布局文件:

<Button 
     android:text="@string/press_me" 
     android:layout_margin="12dp" 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 

     android:background="@drawable/button_bg" 
/> 

但我的按钮仍然显示为尖角而不是圆形,为什么?

(请不要随便扔我一个关于如何使圆角链接,我上面的代码,后面这些教程,我只是想知道我错了。谢谢)

+0

你错了,你不说你的代码的结果是 – pskink

+0

我的结果是一个尖角而不是圆角。 –

+0

尝试删除android:drawable =“@ color/*” – pskink

回答

1

从删除android:drawable item节点就像这样。

<item android:state_pressed="true" 
     android:state_enabled="true"> 

编辑:(?我怎样才能从指定的colors.xml颜色项目,然后)

为您的按钮文本颜色的状态颜色绘制。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" /> 
    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" /> 
    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" /> 
    <item android:color="#ffffff" /> 
</selector> 

然后将其设置为您的按钮的文本颜色。

android:textColor="@drawable/button_text_color" 
+0

如何从colors.xml指定颜色的项目呢? –

+0

您需要为您的按钮创建一个有状态的颜色,就像您创建了有状态的背景一样。编辑添加此。 – Gaurav

1

移除item如下所有android:drawable那么它会工作。

当您在item中添加属性android:drawable时,此可绘制对象重叠了您创建的形状。这就是为什么你看不到你的圆形。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_enabled="false"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 
    <item android:state_enabled="true" android:state_pressed="true"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 
    <item android:state_enabled="true"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 

</selector> 
+0

如何才能从colors.xml中为物品指定颜色呢? –

+0

在这行''... change color as your wish。 –

+0

您的意思是在这种情况下没有办法直接从colors.xml资源获取颜色? –