2010-09-10 17 views
5

I-Taste mit etwas Schatten erstellt einen Stil mit:benutzerdefinierte Schaltfläche: Stil ändern, wenn sie gedrückt

<style name="test"> 
    <item name="android:shadowColor">#FFFFFF</item> 
    <item name="android:shadowRadius">1</item> 
    <item name="android:shadowDx">1</item> 
    <item name="android:shadowDy">1</item> 
</style> 

Dies trifft einen weißen Schatten auf den Text der Schaltfläche in seinen normalen Zustand. Ich habe mich nur gefragt, ob jemand weiß, ob es eine Möglichkeit gibt, diesen Schatten zu entfernen, wenn der Knopf gedrückt ist. Mit anderen Worten, gibt es eine Möglichkeit, einen anderen Stil anzuwenden, wenn sich die Schaltfläche in einem anderen (gedrückten) Zustand befindet?

Vielen Dank im Voraus!

bearbeiten

bold.xml:

<resources> 
    <style name="bold_text"> 
     <item name="android:textStyle">bold</item> 
    </style> 
</resources> 

button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/test_pressed" 
       style="@style/bold_text" 
      android:state_pressed="true"/> 
    <item android:drawable="@drawable/test_focused" 
      android:state_focused="true"/> 
    <item android:drawable="@drawable/test_normal"/> 
</selector> 

mein Layout:

<Button 
     ... 
     android:background="@drawable/button"/> 

Antwort

2
+0

Diese Methode funktioniert nicht ... die ColorStateList erlaubt mir nur die Farbe des Textes in verschiedenen Zuständen zu ändern. Ich wollte den Stil ändern (z. B. die Textgröße beim Drücken erhöhen oder den Schatten entfernen, wenn er gedrückt wird) für verschiedene Zustände. – user440308

+0

Dies kann mehr als nur Farben, Sie können ganze Zeichnungsdateien erstellen, die in XML definiert sind. Sie wenden den Stil einfach auf Ihr Zeichen an. – schwiz

+0

Hmm. Ich kann es nicht zur Arbeit bringen. Ich habe einen neuen Stil namens "bold" erstellt und eine weitere XML-Datei namens "button_test.xml" erstellt, die einen Selektor mit den verschiedenen Zuständen (gedrückt, fokussiert, normal) enthält. Ich bin mir nicht sicher, wie ich "button_test.xml" in meinem Layout referenzieren soll. – user440308

0

Nach einer Überprüfung einer meiner button.xml-Dateien, fand ich, dass die Reihenfolge der Auswertung (die in den Dokumenten .. ..) war so, dass meine Tests die gleiche Zeichnungsauswahl ausgewählt. Durch die Korrektur der Reihenfolge funktionierte es.

Ausgenommen nicht im Falle von button2.xml. Ich habe es geschafft, indem ich alle außer den "drawable" und den "state_ *" Spezifikationen entfernte. Ich hatte eine "textColor" drin - sieht aus wie XML, das über andere Prüfungen hinausgeht (wie style = ".." oben), macht den Selektor stillschweigend ungültig. Ein guter Ort, um die Validierung zu verlängern!

Schwiz hat es richtig ... für Text verwenden Sie einen separaten Selektor, der im "color" -Unterverzeichnis Ihres Ressourcenverzeichnisses definiert ist: siehe ColorStateList.

Verwandte Themen