2012-11-18 30 views
22

Tôi đang cố gắng tạo một nút với báo chí trạng thái và chọn, Tôi đã làm tương tự với các tab và nó hoạt động nhưng tôi không biết tại sao tại đây không hoạt động. Tôi đã thực hiện nó như thế này:Nút Android chọn và nhấn có thể draw

button_sel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <gradient android:startColor="@color/azulado" 
       android:endColor="@color/azulBrillante" 
       android:angle="270" /> 
    <corners android:radius="@dimen/corner_radius" /> 
    <stroke android:width="2px" 
      android:color="@color/blanco" /> 
</shape> 

button_unsel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <gradient android:startColor="@color/botonesD" 
       android:endColor="@color/botones" 
       android:angle="270" /> 
    <corners android:radius="@dimen/corner_radius" /> 
    <stroke android:width="2px" 
      android:color="@color/blanco" /> 
</shape> 

Và chọn, button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_sel" 
      android:state_selected="true" 
      android:state_pressed="true"/> 
<item android:drawable="@drawable/button_unsel" 
     android:state_selected="false" 
     android:state_pressed="false"/> 
</selector> 

Và ở đây tôi gọi số có thể drawable làm nền:

<style name="button"> 
    <item name="android:background">@drawable/button</item> 
    <item name="android:textSize">@dimen/text_size</item> 
    <item name="android:padding">@dimen/padding_button</item> 
    <item name="android:textColor">@color/blanco</item> 
</style> 

Cảm ơn bạn !!!!

Trả lời

48

Mục đầu tiên trong bộ chọn của bạn chỉ được sử dụng, khi nhấn nút VÀ chọn. Nếu bạn muốn sử dụng button_sel khi nút bấm của bạn được nhấn HOẶC chọn, bạn nên làm một cái gì đó như thế này:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_sel" android:state_selected="true" /> 
    <item android:drawable="@drawable/button_sel" android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_unsel" /> 
</selector> 

Các mục được đánh giá từ trên xuống dưới, người cuối cùng là mặc định. Mặc dù tôi không chắc chắn nếu state_selected có ý nghĩa cho các nút.

+2

Cảm ơn bạn. Đó là !! – croigsalvador

5

Có thể sử dụng mục nội tuyến hình dạng.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_pressed="true" > 
      <shape....> 
     </item> 
     <item android:state_selected="true" > 
      <shape....> 
     </item> 
     <item android:state_pressed="true" android:state_selected="true" > 
      <shape...> 
     </item> 
    </selector> 

Đối với mẫu:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" > 
     <shape 
      android:shape="rectangle"> 
      <gradient android:startColor="@color/md_amber_300" 
       android:endColor="@color/md_amber_50" 
       android:angle="270" /> 
      <corners android:radius="@dimen/fab_margin" /> 
      <stroke android:width="2px" 
       android:color="@color/primaryColorDark_orange" /> 
     </shape> 
    </item> 
    <item android:state_pressed="true" > 
     <shape 
      android:shape="rectangle"> 
      <gradient android:startColor="@color/md_amber_300" 
       android:endColor="@color/md_amber_50" 
       android:angle="270" /> 
      <corners android:radius="@dimen/fab_margin" /> 
      <stroke android:width="2px" 
       android:color="@color/primaryColorDark_orange" /> 
     </shape> 
    </item> 
    <item android:state_pressed="true" android:state_selected="true" > 
     <shape 
      android:shape="rectangle"> 
      <gradient android:startColor="@color/md_teal_500" 
       android:endColor="@color/md_blue_400" 
       android:angle="270" /> 
      <corners android:radius="@dimen/fab_margin" /> 
      <stroke android:width="2px" 
       android:color="@color/md_amber_A400" /> 
     </shape> 
    </item> 
</selector> 
Các vấn đề liên quan