<ImageButton android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/media_skip_backward"
android:background="@drawable/transparent"></ImageButton>
Dies ist, was ich versucht habe, einen transparenten ImageButton zu erhalten, um diese Schaltflächen in einer SurfaceView zu platzieren. Aber Eclipse gibt mir einen Fehler im Projekt, sobald ich die transparente Linie in XML einbinde.
Bitte helfen Sie.
android
transparent
imagebutton
surfaceview
Namratha
quelle
quelle
Antworten:
Versuchen Sie, null als Hintergrund zu verwenden ...
quelle
SurfaceView
sollte es Ihnen ermöglichen, Ihre Schaltflächen über einer Oberfläche zu platzieren, aber beachten Sie: "Dies kann verwendet werden, um Überlagerungen wie Schaltflächen auf der Oberfläche zu platzieren. Beachten Sie jedoch, dass dies die Leistung beeinträchtigen kann, da eine vollständige Alpha-Mischung vorliegt Composite wird jedes Mal ausgeführt, wenn sich die Oberfläche ändert. " von developer.android.com/reference/android/view/SurfaceView.htmlVERWENDEN SIE KEIN TRANSAPENT ODER NULL LAYOUT, da dann die Schaltfläche (oder die generische Ansicht) beim Klicken nicht mehr hervorgehoben wird !!!
Verwenden Sie dies in den Schaltflächenspezifikationen:
quelle
android:background="?android:selectableItemBackgroundBorderless"
Sie können auch eine transparente Farbe verwenden:
quelle
Developer option: Show GPU overdraw
und den Unterschied zwischen dem Festlegen eines Hintergrunds auf@null
und sehen@android:color/transparent
.Wenn Sie den Hintergrund auf
"@null"
einstellen, hat die Schaltfläche beim Klicken keine Auswirkung. Dies wird eine bessere Wahl sein.Später fand ich das mit
ist auch eine gute Lösung. Und Sie können dieses Attribut in Ihrem eigenen Stil erben.
quelle
selectableItemBackground
hat den zusätzlichen Vorteil, dass die Schaltfläche beim Klicken den Status ändert. Bei den anderen Lösungen wird die Schaltfläche nicht anklickbar angezeigt.Zur Laufzeit können Sie folgenden Code verwenden
quelle
Ich glaube, die akzeptierte Antwort sollte sein:
android:background="?attr/selectableItemBackground"
Dies entspricht der Antwort von @ lory105, verwendet jedoch die Unterstützungsbibliothek für maximale Kompatibilität (das
android:
Äquivalent ist nur für API> = 11 verfügbar).quelle
Entfernen Sie diese Zeile:
Und in Ihrer Aktivitätsklasse
Sie können die Alpha-Stufe 0 bis 255 einstellen
o bedeutet transparent und 255 bedeutet undurchsichtig.
quelle
Am besten verwenden Sie den transparenten Farbcode
Verwenden Sie den Farbcode # 00000000, um alles transparent zu machen
quelle
@android:color/transparent
ohne fest codierte Werte.@android:
direkte Einfügen einer Referenz in das Layout wird als fest codierter Wert angesehen, da Sie, wenn Sie ihn ändern möchten, immer noch im Layout surfen müssen, um ihn zu finden. Ich würde so etwas deklarieren<item name="something">@android:color/transparent</item>
und meinen eigenen Wert im Layout verwenden, damit ich ihn leicht in meiner Datei resources.xml finden und ändern kann, ohne ihn im Layout suchen zu müssenVerwenden Sie
ImageView
... es hat standardmäßig einen transparenten Hintergrund ...quelle
Ich habe bereits etwas zum Hintergrund hinzugefügt, also hat dieses Ding für mich funktioniert:
(Android Studio 3.4.1)
BEARBEITEN : funktioniert nur auf Android API Level 21 und höher. Verwenden Sie dies aus Kompatibilitätsgründen stattdessen
quelle
Benutze das:
quelle
Legen Sie den Hintergrund des ImageButton in XML als @null fest
quelle
Verwenden Sie "@null" . Es hat bei mir funktioniert.
quelle
Es ist
android:background="@android:color/transparent"
quelle
Hiermit wird die Hintergrundfarbe programmgesteuert als transparent festgelegt
quelle
Programmatisch kann dies erfolgen durch:
quelle
android:background="@drawable/transparent"
. B. ). In jedem Fall schlage ich nur einen möglichen Grund für die Ablehnung vor. Ich sage nicht, dass es gerechtfertigt ist.In Ihrem XML-Set-
Background
Attribut für einen beliebigenWhite(#FFFFFF)
Farbton oder Farbton.Black(#000000)
Wenn Sie Transparenz wünschen, setzen Sie einfach 80 vor den eigentlichen Hash-Code.quelle
Ich habe eine transparente
png
für dieImageButton
und dieImageButton
gearbeitet.quelle