Ich habe eine Schaltfläche wie folgt:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
In meinem onCreate()
Fall rufe ich Button01 folgendermaßen auf:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Die Anwendung enthält einen Hintergrund, und ich möchte für diese Schaltfläche zum Senden eine Deckkraft festlegen. Wie kann ich eine Deckkraft für diese Ansicht festlegen? Ist es etwas, das ich auf der Java-Seite festlegen kann, oder kann ich es in der Datei main.xml festlegen?
Auf der Java-Seite habe ich es versucht Button01.mutate().SetAlpha(100)
, aber es gab mir einen Fehler.
Ich bin erstaunt über die VIEL komplizierteren Antworten aller anderen .
XML
Sie können das Alpha ganz einfach in der Farbdefinition der Schaltfläche (oder einer anderen Ansicht) in Ihrer XML definieren:
Im obigen Beispiel wäre die Farbe ein teilweise transparentes Rot.
Bei der Definition der Farbe einer Ansicht kann das Format entweder
#RRGGBB
oder sein#AARRGGBB
, wobeiAA
der hexadezimale Alpha-Wert ist.FF
wäre völlig undurchsichtig und00
wäre völlig transparent.Dynamisch
Wenn Sie die Deckkraft in Ihrem Code dynamisch ändern müssen, verwenden Sie
Wobei die INT von
0
(vollständig transparent) bis255
(vollständig undurchsichtig) reicht.quelle
android:color
Attribut.background
Deckkraft, keineview
Deckkraft. In vielen Anwendungsfällen nicht gleichwertigIch denke, Sie haben die Antwort möglicherweise bereits gefunden, aber wenn nicht (und für andere Entwickler), können Sie dies folgendermaßen tun:
Hier habe ich die Deckkraft auf 45 eingestellt. Sie können sie grundsätzlich von 0 (vollständig transparent) bis 255 (vollständig undurchsichtig) einstellen.
quelle
Ich würde vorschlagen, dass Sie eine benutzerdefinierte ARGB-Farbe in Ihrer Datei colours.xml erstellen, z.
Stellen Sie dann den Hintergrund Ihrer Schaltfläche auf diese Farbe ein:
Wenn Sie mit der Form der Schaltfläche herumspielen möchten, können Sie auch eine Form-Zeichenressource erstellen, in der Sie die Eigenschaften festlegen, wie die Schaltfläche aussehen soll:
Datei: res / drawable / round_corner_box.xml
Verwenden Sie dies dann als Hintergrund für die Schaltfläche:
quelle
Laut der Android-Dokumentansicht ist Alpha ein Wert zwischen 0 und 1. Verwenden Sie zum Einstellen etwa Folgendes:
quelle
Viel einfacher von oben. Das Standard-Alpha-Attribut ist für die Schaltfläche vorhanden
Der Bereich liegt zwischen 0 für vollständige Transparenz und 1 für vollständige Deckkraft.
quelle
Das Obige ist etwas, das ich weiß ... Ich denke, das Erstellen einer benutzerdefinierten Schaltflächenklasse ist die beste Idee
API Level 11
Vor kurzem bin ich auf dieses Android: Alpha XML-Attribut gestoßen, das einen Wert zwischen 0 und 1 annimmt . Die entsprechende Methode ist setAlpha (float) .
quelle
@android:color/transparent
als Hintergrund wird die Ansicht tatsächlich vollständig transparent. Der@android:alpha
- Teil scheint ein Nachtrag zu sein.Obwohl dies
btnMybutton.getBackground().setAlpha(45);
eine gute Idee ist, wird Alpha nur auf den Hintergrund und nicht auf die gesamte Ansicht angewendet.Wenn Sie Alpha zum Anzeigen anwenden möchten, verwenden Sie
btnMybutton.setAlpha(0.30f);
stattdessen. Dadurch wird die Deckkraft auf die Ansicht angewendet. Es akzeptiert einen Wert zwischen 0 und 1.Doc sagt:
quelle
Ich bin auf dieses Problem mit ICS / JB gestoßen, weil die Standardschaltflächen für das Holo-Thema aus Bildern bestehen, die leicht transparent sind. Für den Hintergrund fällt dies besonders auf.
Lebkuchen vs. ICS +:
Das Kopieren aller zeichnbaren Zustände und Bilder für jede Auflösung und das Festhalten der transparenten Bilder ist mühsam. Daher habe ich mich für eine schmutzigere Lösung entschieden: Wickeln Sie den Knopf in eine Halterung mit weißem Hintergrund. Hier ist ein grobes XML-Zeichenobjekt (ButtonHolder), das genau das tut:
Ihre XML-Datei
ButtonHolder.xml
styles.xml
Dies führt jedoch zu einem weißen Rand, da die Bilder der Holo-Schaltfläche Ränder enthalten, um den gedrückten Raum zu berücksichtigen:
Die Lösung besteht also darin, dem weißen Hintergrund einen Rand (4 dp hat bei mir funktioniert) und abgerundete Ecken (2 dp) zu geben, um das Weiß vollständig auszublenden und die Schaltfläche dennoch solide zu machen:
ButtonHolder.xml
Das Endergebnis sieht folgendermaßen aus:
Sie sollten diesen Stil für Version 14 + verwenden und ihn für Lebkuchen / Waben optimieren oder ausschließen, da sich die nativen Bildgrößen der Schaltflächen von denen von ICS und JB unterscheiden (z. B. führt dieser genaue Stil hinter einer Lebkuchenschaltfläche zu einem kleinen Weißanteil unter der Schaltfläche).
quelle
Für eine Ansicht können Sie die Deckkraft wie folgt einstellen.
Die Eigenschaft
view.setAlpha(int)
ist für die API-Version größer als 11 veraltet. Von nun an wird Eigenschaft wie.setAlpha(0.5f)
verwendet.quelle
Für API <11 für textView color habe ich Folgendes getan:
Ein bisschen umständlich, aber hey, es funktioniert :-)
quelle
Ich weiß, dass dies bereits eine Reihe von Antworten enthält, aber ich habe festgestellt, dass es für Schaltflächen am einfachsten ist, eigene XML-Selektoren zu erstellen und diese auf den Hintergrund dieser Schaltfläche zu setzen. Auf diese Weise können Sie den Status auch ändern, wenn Sie ihn drücken oder aktivieren usw. Hier ist ein kurzer Ausschnitt von einem, den ich benutze. Wenn Sie einer der Farben Transparenz hinzufügen möchten, fügen Sie einen führenden Hex-Wert (#XXcccccc) hinzu. (XX == "Alpha der Farbe")
quelle