Android-knopkiezer

Dit is een knopselector zodat deze normaal rood lijkt, en grijs wanneer erop wordt gedrukt.

Ik zou graag willen vragen hoe de code verder rechtstreeks kan worden gewijzigd, zodat wanneer INGEDRUKT de tekstgrootte en kleur ook kunnen veranderen? Hartelijk dank!

<item android:state_pressed="true" >         
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
        <stroke android:width="2dp" android:color="@color/black" />
        <solid android:color="@color/grey"/>
        <padding android:left="5dp" android:top="2dp" 
            android:right="5dp" android:bottom="2dp" /> 
        <corners android:radius="5dp" /> 
    </shape>    
</item>
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
        <stroke android:width="2dp" android:color="@color/black" />
        <solid android:color="#FF6699"/>
        <padding android:left="5dp" android:top="2dp" 
            android:right="5dp" android:bottom="2dp" /> 
        <corners android:radius="5dp" /> 
    </shape>
</item>


Antwoord 1, autoriteit 100%

Je hoeft alleen maar selectorof buttonin je lay-outbestand in te stellen.

<Button
     android:id="@+id/button1"
     android:background="@drawable/selector_xml_name"
     android:layout_width="200dp"
     android:layout_height="126dp"
     android:text="Hello" />

en klaar.

Bewerken

Hierna volgt het bestand button_effect.xmlin de drawable-directory

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
    <item android:drawable="@drawable/numpad_button_bg_normal"></item>
</selector>

Hierin kun je zien dat er 3 tekenbare tekens zijn, je hoeft alleen deze button_effect-stijl op je buttonte plaatsen, zoals ik hierboven schreef. Je hoeft alleen maar selector_xml_namete vervangen door button_effect.


Antwoord 2, autoriteit 13%

U kunt de tekstgrootte niet wijzigen met een staatslijst tekenbaar. Ga als volgt te werk om de tekstkleur en tekstgrootte te wijzigen:

Tekstkleur

Als u de tekstkleur wilt wijzigen, kunt u een kleurstatuslijst maken bron. Het zal een aparte bron zijn in de res/color/directory. In layout xml moet je het instellen als de waarde voor android:textColorattribuut. De kleurkiezer zal dan iets als dit bevatten:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/text_pressed" />
    <item android:color="@color/text_normal" />
</selector>

Tekstgrootte

Je kunt de grootte van de tekst niet eenvoudig met bronnen wijzigen. Er is geen “dimen-selector”. Je moet het in code doen. En er is geen pasklare oplossing.

Waarschijnlijk is de gemakkelijkste oplossing het gebruik van View.onTouchListener()en handel de op en neer gebeurtenissen dienovereenkomstig af. Gebruik zoiets als dit:

view.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // change text size to the "pressed value"
                return true;
            case MotionEvent.ACTION_UP:
                // change text size to the "normal value"
                return true;
            default:
                return false;
            }
        }
});

Een andere oplossing zou kunnen zijn om de weergave uit te breiden en de methode setPressed(Boolean)te negeren. De methode wordt intern aangeroepen wanneer de verandering van de ingedrukte status plaatsvindt. Wijzig vervolgens de grootte van de tekst dienovereenkomstig in de methodeaanroep (vergeet niet de super aan te roepen).


Antwoord 3, autoriteit 8%

Maak custom_selector.xml in een tekenbare map

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

Geselecteerde.xml-vorm maken in tekenbare map

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
   <solid android:color="@color/selected"/>
   <padding />
   <stroke android:color="#000" android:width="1dp"/>
   <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>

Maak een niet-geselecteerde.xml-vorm in een tekenbare map

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
   <solid android:color="@color/unselected"/>
   <padding />
   <stroke android:color="#000" android:width="1dp"/>
   <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>

Voeg de volgende kleuren toe voor de geselecteerde/niet-geselecteerde staat in de map color.xml van de waardenmap

<color name="selected">#a8cf45</color>
<color name="unselected">#ff8cae3b</color>

je kunt de volledige oplossing hier


Antwoord 4

De beste manier om de selector te implementeren is door de xml te gebruiken in plaats van de programmatische manier, omdat het gemakkelijker te implementeren is met xml.

   <?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item>
        <item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"></item>
        <item android:drawable="@drawable/button_bg_normal"></item>
    </selector>

Voor meer informatie die ik heb geïmplementeerd via deze link
http://www.blazin.in/2016 /03/hoe-selectors-for-botton.html te gebruiken


Antwoord 5

In Layout .xml-bestand

<Button
 android:id="@+id/button1"
 android:background="@drawable/btn_selector"
 android:layout_width="100dp"
 android:layout_height="50dp"
 android:text="press" />

btn_selector.xml

<?xml version="1.0" encoding="utf-8"?>

<item android:drawable="@drawable/btn_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_bg_normal"></item>


Antwoord 6

U kunt deze code gebruiken:

<Button
    android:id="@+id/img_sublist_carat"
    android:layout_width="70dp"
    android:layout_height="68dp"
    android:layout_centerVertical="true"
    android:layout_marginLeft="625dp"
    android:contentDescription=""
    android:background="@drawable/img_sublist_carat_selector"
    android:visibility="visible" />

(kiezerbestand)
img_sublist_carat_selector.xml:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_focused="true" 
       android:state_pressed="true"        
       android:drawable="@drawable/img_sublist_carat_highlight" />
 <item android:state_pressed="true" 
       android:drawable="@drawable/img_sublist_carat_highlight" />
 <item android:drawable="@drawable/img_sublist_carat_normal" />
</selector>

Other episodes