2017-12-14 5 views
1

Ich versuche, diese Lautstärketaste, die die Zeichen entsprechend dem Zustand, in dem es eingefügt wird, zu ändern. So auf Standard ist die Lautstärke des Geräts eingeschaltet, wenn gedrückt, wird es das Gerät stummschalten und wenn er gehalten wird, wird das Gerät nur vibrieren. Jetzt versuche ich das Ziehbare zu ändern, wenn es vibriert, aber nichts, was ich versuche, scheint zu funktionieren. Ich habe diesen Code derzeit in meinem XML und habe versucht, mit dem gedrückten Zustand herumzuspielen, aber ich konnte nicht etwas zum Arbeiten bringen, das das Zeichen entsprechend ändert.Taste ändern Zeichen auf Halten

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

    <item android:drawable="@drawable/ic_volume_down_black_24dp" 
    android:state_checked="true" /> 

    <item android:drawable="@drawable/ic_volume_off_black_24dp" 
    android:state_checked="false"/>  
</selector> 
+0

Was ich habe, In Ihrem Fall gibt es 3 Zustände (ein, aus, vibrieren). Mit Selektor können Sie zwei Status aktivieren und deaktivieren. Ich denke du solltest es zur Laufzeit für den 3. Staat machen. Für zwei Zustände verwenden Sie Tag im Selektor. – ADM

+0

Ich würde herausfinden müssen, wie das geht, aber ich hatte Angst, das wäre wahrscheinlich die einzige Option, danke. – Proxzor

Antwort

0

Fügen Sie diese android:state_pressed hinzu.

<item android:drawable="@drawable/image_you_want_on_press_state" 
android:state_pressed="true" />` 

Hoffe diese Hilfe.

+0

Ich habe dies früher versucht, aber es schaltet nicht auf das Zeichen um, wenn die Taste gedrückt wird. – Proxzor

0

ich eine neue ziehbar XML-Datei erstellt, für zB image_state.xml

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

Und in meinem Layout-Datei, habe ich die src des Imageview als:

<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:src="@drawable/image_state"/> 

dies auch überprüfen : Change source image for image view when pressed

+0

Ich benutze einen Toggle-Schalter, aber ich habe das gleiche getan. Habe das XML, das ich oben eingefügt habe, in seine eigene XML-Datei kopiert und die zeichnbare Quelle damit verknüpft. Ich bin mir nicht sicher, wie das anders ist, ist das nicht am Ende genauso? Ich möchte, dass die Zeichen auf der Auswahl bleiben. Deshalb habe ich den überprüften Zustand benutzt. – Proxzor

+0

Ich habe die Antwort jetzt bearbeitet, überprüfen Sie den Link –

0

Standard ziehbar <item android:drawable="@drawable/ic_volume_off_black_24dp"></item> und für die gedrückte st <item android:drawable="@drawable/ic_volume_down_black_24dp" android:state_pressed="true" />

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="200"> 
    <item android:drawable="@drawable/ic_volume_down_black_24dp" android:state_activated="true" /> 
    <item android:drawable="@drawable/ic_volume_down_black_24dp" android:state_pressed="true" /> 
    <item android:drawable="@drawable/ic_volume_off_black_24dp"></item> 
</selector> 
+0

Meinen Sie ziehbare statt Farbe? Und wenn ich das ausprobiere, zeigt es die Vibration zwischen den Schaltoptionen, und es zeigt die Vibration, die gezogen werden kann, wenn der Knopf gedrückt wird, aber es bleibt nicht auf der Vibration, wie es sollte. – Proxzor

+0

Entschuldigung, ich habe meine Antwort geändert. Bitte schau es dir an. Sie müssen Zeichnungsfarbe nicht verwenden. Ich habe Copy-Paste-Code, deshalb ist seine Farbe. –

+0

Ich änderte es zu diesem: ' ' , aber es bleibt nicht auf der Zeichenfläche, wenn gedrückt wird. – Proxzor

Verwandte Themen