2012-05-17 13 views
17

Ich schrieb benutzerdefinierte Ansicht, die einen Kreis zeichnet. Dann lege ich es auf relatives Layout. Auch ich lege Standardknopf dort, damit sie sich überlappen. Und ich sehe, dass dieser Knopf transparent ist. Wie kann man es undurchsichtig machen?Wie man Knopf nicht transparent macht?

enter image description here

Antwort

6

Die Standard-Holo Themen Taste teilweise transparent ist. Sie können entweder ein neues 9.png Bild erstellen, das in der Schaltfläche verwendet werden soll, oder eine neue Schaltfläche erstellen, indem Sie das Zeichenfeld verwenden.

Hier ist ein Link, wie diese zu tun:

http://droidapp.co.uk/?p=309

+1

Was ist die einfachste Art und Weise? Kann ich nicht einfach Button als nicht transparent stylen? –

+0

Die zweite Option ist ziemlich einfach. Sie können nur den Hintergrund der Schaltfläche in eine Volltonfarbe ändern (zB # 999999), aber das würde nicht gut aussehen und würde der Schaltfläche keinen gedrückten Zustand geben, der eine schlechte Benutzererfahrung verursacht. – Tony

3

können Sie die Taste in separaten Rahmenlayout setzen, so dass Ihre Ansicht meine Idee wird nicht auf den Button beeinflussen und das ist

1

speichern unter Code als XML in ziehbar Ordner und geben Sie diese xml als Schaltfläche Hintergrund

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="0dp" android:color="#ffffff" /> 
    <solid android:color="#000000"/> 
    <corners android:radius="1px"/> 
    <padding android:left="5dp" android:top="3dp" android:right="5dp" android:bottom="3dp" /> 
</shape> 

Ex:

android:background="@drawable/<< your file name>>" 
31

Setzen Sie den Hintergrund auf @android:drawable/btn_default, um r zu erhalten ID der Transparenz von Holothema

+3

Dies ändert auch die Grafik auf den Gerätestandard (d. H. Nicht Holo). – Timmmm

+2

Perfekte Antwort. Vielen Dank. –

+0

Es ist die perfekte Antwort! Weißt du, wie man es auf andere Kontrollen anwendet? (vor allem zu EditText) – Bronek

0

Die Holo-Transparenz ist tatsächlich in die PNG-Dateien integriert. Die einzige Möglichkeit, dies zu ändern, besteht darin, die PNGs zu bearbeiten und sie nicht transparent zu machen. Das ist eigentlich gar nicht so einfach. Sie müssen den Alpha-Kanal des Bildes mit 255/102 multiplizieren. Was ist nicht einfach!

Aber weil ich so ein Genie bin, habe ich einen Weg gefunden, es zu tun. Grundsätzlich habe ich alle relevanten PNGs und XMLs in eine eigene Verzeichnisstruktur kopiert (die Buttons haben nur -mdpi, -hdpi und -xhdpi Versionen). Dann lief ich das:

für Datei in find . -name *.png; do mogrify -evaluate Multipliziere 2.5-channel Alpha $ FILE; fertig

Arbeit erledigt! Eigentlich funktionierte es aus irgendeinem Grund nicht für die Behinderten-Buttons - ich denke, weil das Center supertransparent ist, aber mir ist das nicht so wichtig. Sie müssen für diese Bilder einen höheren Wert als 2,5 verwenden, wenn Sie sie vollständig intransparent darstellen möchten.

Folge ist das Ergebnis here.

+0

Das ist ausgezeichnet, aber wenn Sie sagen "Dann lief ich das ...", wo Führst du diesen Code aus? – Floris

1

Ich war mit dem gleichen Problem, aber mit ToggleButton. Eine hässliche, aber schnelle Lösung bestand darin, ein ImageView direkt hinter der Taste zu platzieren und seine margin s, background und alpha an die Schaltfläche anzupassen. Zum Beispiel in einem RelativeLayout:

<ImageView 
    android:layout_alignLeft="@+id/toggleButton" 
    android:layout_alignBottom="@+id/toggleButton" 
    android:layout_alignRight="@+id/toggleButton" 
    android:layout_alignTop="@+id/toggleButton" 
    style="@style/HackBackgroundToggleButton" /> 

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/toggleButton" 
    ... /> 

Und in dem Bemühen, den sichtbaren Hack zu reduzieren, die extrahierte Stil:

<style name="HackBackgroundToggleButton"> 
    <item name="android:layout_width">84dp</item> 
    <item name="android:layout_height">42dp</item> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:layout_marginTop">4dp</item> 
    <item name="android:layout_marginLeft">4dp</item> 
    <item name="android:layout_marginRight">4dp</item> 
    <item name="android:layout_marginBottom">4dp</item> 
    <item name="android:alpha">0.75</item> 
</style> 
Verwandte Themen