danke. + 1 dafür. Nach dem Speichern in einem zeichnbaren Ordner als XML-Datei. Wie können wir es verwenden?
Android Killer
1
@AndroidPower können Sie es mit R.drawable.FILE_NAME
Slayton
2
Wohin geht dieser Code im XML-Code für das Markup für die Schaltfläche? Geht es in eine Datei vom Typ styles.xml?
theJerm
Ich habe nur den Strich verwendet (und ihn weiß gemacht), um einen Knopf mit Weiß zu skizzieren. Funktioniert gut mit 4.4, aber in 4.0.3 wird der Knopf schwarz - irgendwelche Ideen warum?
Kibi
1
@ Kibi Entschuldigung, jemand hat meine Antwort bearbeitet und dir falsche Ratschläge gegeben. Ich habe es geändert, aber ich bin schockiert, dass jemand eine akzeptierte Antwort bearbeiten und die Nützlichkeit ändern kann.
Pedantic
57
• • Android Official Solution
Seit Einführung von Android Design Support v28 ist es einfach, eine umrandete Schaltfläche mit zu erstellen MaterialButton. Diese Klasse liefert aktualisierte Materialstile für die Schaltfläche im Konstruktor. Mit app:strokeColorund können app:strokeWidthSie einen benutzerdefinierten Rahmen wie folgt erstellen:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Ich sehe, Sie haben textColor und textSize in Ihrem Button-XML deklariert. Was schlagen Sie vor, wenn jemand bereits einen Stil für textColor und textSize definiert hat und nun den hinzufügen möchte style="@style/Widget.AppCompat.Button.Borderless"?
Wie Sie bereits erwähnt haben, ist es möglich, einen Stil zu definieren, der vom randlosen Stil erbt, und dann bevorzugte Attribute entsprechend dem Basisstil hinzuzufügen.
Aminographie
Etwas OT, aber was ist das interessante 4. Symbol in der Aktionsleiste am unteren Rand des GIF? (Es sieht auch so aus, als ob das GIF von einem echten Gerät gepackt wurde, cool)
i336_
1
Vielleicht irre ich mich, aber für mich in der Schaltfläche • Ungefüllter Rand musste ich ändern: app: backgroundTint = "@ color / transparent" in app: backgroundTint = "@ android: color / transparent"
xarly
37
Erstellen Sie eine button_border.xmlDatei in Ihrem Zeichenordner.
Wenn für Ihre Schaltfläche kein transparenter Hintergrund erforderlich ist, können Sie mithilfe eines Rahmenlayouts eine Illusion eines Rahmens erstellen. Passen Sie einfach das Attribut "Auffüllen" des FrameLayout an, um die Dicke des Rahmens zu ändern.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
Ich bin nicht sicher, ob die XML-Formdateien dynamisch bearbeitbare Rahmenfarben haben. Ich weiß jedoch, dass Sie mit dieser Lösung die Farbe des Rahmens dynamisch ändern können, indem Sie den FrameLayout-Hintergrund festlegen.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Ich weiß, dass es ungefähr ein Jahr zu spät ist, aber Sie können auch ein Bild mit 9 Pfaden erstellen. Es gibt ein Tool, das mit dem Android SDK geliefert wird und beim Erstellen eines solchen Bildes hilft. Siehe diesen Link: http://developer.android.com/tools/help/draw9patch .html
Antworten:
Schritt 1: Erstellen Sie eine Datei mit dem Namen: my_button_bg.xml
Schritt 2: Platzieren Sie diese Datei in res / drawables.xml
Schritt 3: Fügen Sie den folgenden Code ein
Schritt 4: Verwenden Sie den Code "android: background =" @ drawable / my_button_bg ", wo dies erforderlich ist, z. B. unten:
quelle
• •
Android Official Solution
Seit Einführung von Android Design Support v28 ist es einfach, eine umrandete Schaltfläche mit zu erstellen
MaterialButton
. Diese Klasse liefert aktualisierte Materialstile für die Schaltfläche im Konstruktor. Mitapp:strokeColor
und könnenapp:strokeWidth
Sie einen benutzerdefinierten Rahmen wie folgt erstellen:1. Wenn Sie verwenden
androidx
:build.gradle
• Umrandete Schaltfläche:
• Nicht ausgefüllte umrandete Schaltfläche:
2. Wenn Sie verwenden
appcompat
:build.gradle
style.xml
Stellen Sie sicher, dass Ihr Anwendungsthema von
Theme.MaterialComponents
statt erbtTheme.AppCompat
.• Umrandete Schaltfläche:
• Nicht ausgefüllte umrandete Schaltfläche:
Visuelles Ergebnis
quelle
style="@style/Widget.AppCompat.Button.Borderless"
?Erstellen Sie eine
button_border.xml
Datei in Ihrem Zeichenordner.res / drawable / button_border.xml
Fügen Sie Ihrem XML-Aktivitätslayout eine Schaltfläche hinzu und legen Sie den Hintergrund fest
android:background="@drawable/button_border"
.quelle
Erstelle drawable / button_green.xml:
und weisen Sie darauf hin als
@drawable/button_green
:quelle
Informationen zum Erstellen einer Form zum Zeichnen finden Sie hier http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Sobald Sie dies getan haben, in der XML für Ihre Schaltfläche festgelegt
android:background="@drawable/your_button_border"
quelle
Wenn für Ihre Schaltfläche kein transparenter Hintergrund erforderlich ist, können Sie mithilfe eines Rahmenlayouts eine Illusion eines Rahmens erstellen. Passen Sie einfach das Attribut "Auffüllen" des FrameLayout an, um die Dicke des Rahmens zu ändern.
Ich bin nicht sicher, ob die XML-Formdateien dynamisch bearbeitbare Rahmenfarben haben. Ich weiß jedoch, dass Sie mit dieser Lösung die Farbe des Rahmens dynamisch ändern können, indem Sie den FrameLayout-Hintergrund festlegen.
quelle
In Ihrem XML-Layout:
Erstellen Sie im Zeichenordner eine Datei für den Rahmenstil der Schaltfläche:
Und in Ihrer Aktivität:
quelle
Ich weiß, dass es ungefähr ein Jahr zu spät ist, aber Sie können auch ein Bild mit 9 Pfaden erstellen. Es gibt ein Tool, das mit dem Android SDK geliefert wird und beim Erstellen eines solchen Bildes hilft. Siehe diesen Link: http://developer.android.com/tools/help/draw9patch .html
PS: Das Bild kann auch unendlich skaliert werden
quelle