Как да сложа граница на бутон и ефект на щракване?

Имам този бутон XML, който има прозрачен фон и при щракване цветът се променя, така че показва "ефект на щракване".

XML с възможност за рисуване:

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

    <!-- press-->
    <item android:drawable="@android:color/transparent" android:state_pressed="false" />

    <!-- focused-->
    <item style="@style/AppTheme" android:drawable="@color/color_primary" android:state_pressed="true" />

    <!-- normal-->
    <item android:drawable="@android:color/transparent" />

</selector>

Въпросът ми е как да сложа рамка на този бутон? Или XML пример, така че да имате същия резултат. Благодаря ти!


person Community    schedule 14.12.2017    source източник


Отговори (2)


създайте файл с възможност за рисуване, подобен на този, selected.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="1dp"
        android:color="#00ff00" />
</shape>

след това променете този ред

<item 
     style="@style/AppTheme" 
     android:drawable="@color/color_primary" 
     android:state_pressed="true" />

to

<item 
     style="@style/AppTheme" 
     android:drawable="@drawable/selected" 
     android:state_pressed="true" />

плътният цвят е цветът на фона, а границата е щрихът, можете да създавате чертежи, които се използват в различните състояния на селектора

person xanexpt    schedule 14.12.2017

Можете да направите нещо подобно: 1. Първо създайте файл с възможност за рисуване като този:

<shape android:shape="rectangle">
     <!--apply button background transparent, full opacity-->
     <solid android:color="#00ffffff"/>
     <!--make button border solid color, nontransparent-->
     <stroke android:color="#stroke color" android:width="2dp"/>
     <corners android:radius="2dp"/>
</shape>

след това в предоставения от вас код заменете тези редове:

<!-- press-->
<item android:drawable="path to above drawable" android:state_pressed="false" />

<!-- focused-->
<item style="@style/AppTheme" android:drawable="@color/color_primary" android:state_pressed="true" />

<!-- normal-->
<item android:drawable="path to above drawable" />

as

<!-- press-->
<item android:drawable="path to above drawable" android:state_pressed="false" />

<!-- focused-->
<item style="@style/AppTheme" android:drawable="@color/color_primary" android:state_pressed="true" />

<!-- normal-->
<item android:drawable="path to above drawable" />
person Abhilash Maurya    schedule 14.12.2017
comment
Това не работи, защото имам няколко състояния на бутоните. - person ; 14.12.2017