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 selector
of button
in 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.xml
in 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 button
te plaatsen, zoals ik hierboven schreef. Je hoeft alleen maar selector_xml_name
te 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:textColor
attribuut. 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>