Ich fand diesen großartigen Thread, der beschreibt, wie man "den Kuchen isst und ihn auch hat", dh ein Bild für ein Button
anstelle von verwendet ImageButton
(was nicht erlaubt SetText()
, die Größe ändert usw.).
Dies wird mithilfe des View-Attributs erreicht:
android:background="@drawable/bgimage"
Das einzige Problem dabei ist, dass das Bild so gedehnt wird, dass es der Schaltflächengröße entspricht.
Gibt es eine Möglichkeit, Android anzuweisen, das Hintergrundbild überhaupt nicht zu strecken und es entweder zuzuschneiden oder aufzufüllen, ohne eine feste Tastengröße (in Pixel!) Fest zu codieren ?
quelle
ImageView
sieht interessant aus. Mir ist aufgefallen, dass es ein Attribut hat, das nicht inButton
:android:cropToPadding
. Es macht mir nichts aus, stattdessen ein ImageView zu verwenden, solange es vorhanden istsetOnClickListener()
- was es auch tut. Was werde ich aus durch Umschalten zu verlieren seinButton
zuImageView
?setDrawableResource
und dann sicherstellen, dasssetAdjustViewBounds
es auf true gesetzt istSie können eine XML-Bitmap erstellen und als Hintergrund für die Ansicht verwenden. Um ein Dehnen zu verhindern, können Sie ein
android:gravity
Attribut angeben .beispielsweise:
Es gibt viele Optionen, mit denen Sie das Rendern des Bildes anpassen können
http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap
quelle
Einfach zu verwenden
ImageButton
statt zuButton
beheben behebt das Problem.und du kannst einstellen
um den Hintergrund der Schaltfläche zu entfernen, wenn Sie möchten.
Schnelle Lösung !! :-)
quelle
Ich verwende eine ImageView in einem RelativeLayout, das sich mit meinem normalen Layout überschneidet. Kein Code erforderlich. Das Bild wird auf die volle Höhe des Bildschirms (oder eines anderen verwendeten Layouts) angepasst und das Bild dann nach links und rechts zugeschnitten, um es an die Breite anzupassen. In meinem Fall ist das Bild möglicherweise etwas zu klein, wenn der Benutzer den Bildschirm dreht. Daher verwende ich match_parent, wodurch das Bild in der Breite gedehnt wird, wenn es zu klein ist.
quelle
Ich hatte das gleiche Problem: Sie sollten nur ein 9-Patch-Bild (.9.png) anstelle Ihres Originalbildes verwenden.
Serge
quelle
Verwenden Sie draw9patch ..., das in den SDK-Tools von Android Studio enthalten ist. Sie können die dehnbaren Bereiche Ihres Bildes definieren. Wichtige Teile sind eingeschränkt und das Bild sieht nicht ganz verzerrt aus. Eine gute Demo zu dra9patch gibt es HIER
Verwenden Sie draw9patch, um Ihre vorhandene splash.png in new_splash.9.png zu ändern. Ziehen Sie new_splash.9.png in den Projektordner drawable-hdpi und stellen Sie sicher, dass AndroidManifest und styles.xml wie folgt korrekt sind:
AndroidManifest.xml:
styles.xml:
quelle
Ich hatte ein Hintergrundbild, nicht groß, aber mit seltsamen Abmessungen - daher die Dehnung und die schlechte Leistung. Ich habe eine Methode mit den Parametern Context, einer Ansicht und einer zeichnbaren ID (int) erstellt, die der Bildschirmgröße des Geräts entspricht. Verwenden Sie dies beispielsweise in einem Fragment in onVreateView, um den Hintergrund festzulegen.
quelle
Hier ist eine Version von Santoshs Antwort für programmgesteuert erstellte Schaltflächen, ohne dass eine separate XML-Konfiguration erforderlich ist:
Ich habe die ColorFilter-Zeile eingefügt, da dies etwas anders funktioniert als Schaltflächen mit einem normalen Hintergrundbild.
quelle
Sie können a
FrameLayout
mit aImageView
als erstes Kind und dann Ihr normales Layout als zweites Kind verwenden:quelle
Der Schlüssel besteht darin, das Zeichenbare als Bild der Schaltfläche und nicht als Hintergrund festzulegen. So was:
quelle
Man kann eine einfache ImageView in seiner XML verwenden und sie anklickbar machen (android: clickable = "true")? Sie müssen nur ein Bild als src verwenden, das wie eine Schaltfläche geformt wurde, dh runde Ecken.
quelle