2016-02-18 1 views
0

У меня есть следующий селектор:Android: как установить цвет фона набора с помощью селектора с инсультом?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="@color/divider"/> 
     </shape> 
    </item> 
</selector> 

Который используется в качестве фона для кнопки:

<Button 
    android:id="@+id/delete" 
    android:layout_width="25dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/delete_button_stroke" 
    android:text="@string/minus" 
    android:textColor="@color/blue" 
    android:textSize="20sp" /> 

I делает рамку вокруг кнопки, но цвет фона кнопки прозрачен.

Как установить цвет фона и цвет фона для нажатой кнопки с помощью селектора, пожалуйста?

Большое спасибо за любые советы

ответ

1

Во-первых, создать два ShapeDrawable XML-файлы в вашем Рез/вытяжке папку, как это:

btn_state_normal.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    <solid 
     android:color="#ffff00" 
    /> 
    <stroke 
     android:width="2dp" 
     android:color="#0000ff" 
    /> 
    <padding 
     android:left="2dp" 
     android:top="2dp" 
     android:bottom="2dp" 
     android:right="2dp" 
    /> 
    <size 
     android:height="10dp" 
     android:width="10dp" 
    /> 
</shape> 

btn_state_pressed.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    <solid 
     android:color="#ff0000" 
    /> 
    <stroke 
     android:width="2dp" 
     android:color="#00ff00" 
     android:dashWidth="4dp" 
     android:dashGap="2dp" 
    /> 
    <padding 
     android:left="2dp" 
     android:top="2dp" 
     android:bottom="2dp" 
     android:right="2dp" 
    /> 
    <size 
     android:height="10dp" 
     android:width="10dp" 
    /> 
</shape> 

Обратите внимание, что значения размера не имеет значения с (Image)Button с, вводимым коэффициентом растягивается, чтобы соответствовать.

Тогда ваш селектор должен выглядеть следующим образом:

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

    <item 
     android:drawable="@drawable/btn_state_pressed" 
     android:state_pressed="true"/> 
</selector> 

Поскольку android:state_pressed="false" установлен в первом пункте, следующий будет использоваться для прессованного состояния.

Смотрите также documentation для StateListDrawable

+0

Работает как очарование, спасибо. – redrom

0
 <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
      <shape android:shape="rectangle"> 
       <stroke android:width="1dp" android:color="@color/divider"/> 
      </shape> 
     </item> 
<color android:color="@color/abc_search_url_text_normal"/>// add this line it should work. 
    </selector> 
+0

Невозможно установить @ цвет/my_color от colors.xml – redrom

+0

Не работает для меня, цвет фона по-прежнему то же самое. – redrom

Смежные вопросы