Ich habe nur die Designrichtlinien überprüft und mich über die randlosen Knöpfe gewundert. Ich habe geglotzt und versucht, in der Quelle zu finden, kann es aber nicht alleine zusammenbringen. Ist dies das normale Button-Widget, aber Sie fügen einen benutzerdefinierten Stil (Android-Standard) hinzu? Wie mache ich diese randlosen Schaltflächen (natürlich kannst du den Hintergrund leer setzen, aber dann habe ich keinen Teiler)?
Hier Links zu den Designrichtlinien:
android
layout
button
borderless
KarlKarlsom
quelle
quelle
Antworten:
Um Verwirrung zu beseitigen:
Dies erfolgt in zwei Schritten: Wenn Sie das Hintergrundattribut für Schaltflächen auf Android setzen: attr / selectableItemBackground erstellt eine Schaltfläche mit Feedback, jedoch ohne Hintergrund.
Die Linie, um die randlose Schaltfläche vom Rest Ihres Layouts zu trennen, wird durch eine Ansicht mit dem Hintergrund android: attr / dividerVertical erstellt
Zum besseren Verständnis finden Sie hier ein Layout für eine randlose Tastenkombination OK / Abbrechen am unteren Bildschirmrand (wie im rechten Bild oben).
quelle
?android:attr/selectableItemBackground
für?attr/selectableItemBackground
und?android:attr/dividerVertical
für?attr/dividerVertical
?android:attr/dividerVerticalfor
und?attr/dividerVertical
arbeitet auch für absFügen Sie einfach das folgende Stilattribut in Ihr
Button
Tag ein:Quelle: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless
Dann können Sie wie in Karls Antwort Teiler hinzufügen .
quelle
Späte Antwort, aber viele Ansichten. Da APIs <11 noch nicht tot sind, ist dies für Interessierte ein Trick.
Lassen Sie Ihren Behälter die gewünschte Farbe haben (möglicherweise transparent). Geben Sie Ihren Schaltflächen dann einen Selektor mit standardmäßiger transparenter Farbe und etwas Farbe, wenn Sie gedrückt werden. Auf diese Weise haben Sie einen transparenten Knopf, der jedoch beim Drücken die Farbe ändert (wie bei Holos). Sie können auch Animationen hinzufügen (wie Holos). Der Selektor sollte ungefähr so aussehen:
Und der Knopf sollte haben
android:background="@drawable/selector_transparent_button"
PS: Lassen Sie Ihren Container die Teiler haben (
android:divider='@android:drawable/...
für API <11)PS [Neulinge]: Sie sollten diese Farben in values / color.xml definieren
quelle
API Level 10
undAPI Level > 10
!Für diejenigen, die randlose Schaltflächen möchten, aber beim Klicken immer noch animiert sind. Fügen Sie dies in die Schaltfläche ein.
Wenn Sie einen Teiler / eine Linie zwischen ihnen wollten. Fügen Sie dies im linearen Layout hinzu.
Zusammenfassung
quelle
style="@style/Widget.AppCompat.Button.Borderless"
Fügen Sie für den Materialstil hinzu, wenn Sie die AppCompat-Bibliothek verwenden.quelle
Aus der iosched-App-Quelle habe ich mir diese
ButtonBar
Klasse ausgedacht :Dies ist der
LinearLayout
Punkt, an dem die Schaltflächen "OK" und "Abbrechen" angezeigt werden und die in der richtigen Reihenfolge angeordnet werden. Fügen Sie dies dann in das Layout ein, in dem sich die Schaltflächen befinden sollen:Dies gibt Ihnen das Aussehen des Dialogs mit randlosen Schaltflächen. Sie finden diese Attribute in der res im Framework.
buttonBarStyle
macht den vertikalen Teiler und die Polsterung.buttonBarButtonStyle
ist wieborderlessButtonStyle
für das Holo-Thema festgelegt, aber ich glaube, dies sollte die robusteste Art sein, es anzuzeigen, da das Framework es anzeigen möchte.quelle
Blick in die Themenattribute
buttonBarStyle
,buttonBarButtonStyle
undborderlessButtonStyle
.quelle
buttonBarButtonStyle
bekomme ich eine Ausnahme.E/AndroidRuntime(17134): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(17134): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x1030281 a=2 r=0x1030281}
Keine Ahnung warum, aber die VerwendungselectableItemBackground
wirkt Wunder.Sie können Schaltflächen auch durch Code randlos machen:
quelle
android.R.attr.selectableItemBackground
aber API 21. Irgendeine Idee, wie dies in früheren Versionen gemacht werden soll?Für diejenigen, die programmlos randlose Schaltflächen für APIs> = 8 erstellen möchten
quelle
Eine andere Lösung, die sowohl auf älteren als auch auf neueren Android-Plattformen funktionieren sollte, ist die Verwendung
Attribut für die Schaltflächenansicht. Nach dem Hinzufügen der obigen Zeile gibt die Schaltfläche jedoch kein Touch-Feedback.
Fügen Sie der Aktivitätsklasse den folgenden Code hinzu, um Touch-Feedback zu geben
Es funktioniert gut für mich.
quelle
case MotionEvent.ACTION_CANCEL:
unten hinzufügencase MotionEvent.ACTION_UP:
.Für alle, die noch suchen:
Erben Sie Ihren eigenen Stil für Holo-Schaltflächen:
oder Holo Light:
und für randlose Holo-Knöpfe:
oder Holo Light:
quelle
Auf diese Weise erstellen Sie programmgesteuert eine randlose (flache) Schaltfläche, ohne XML zu verwenden
quelle
ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext);
und es würde nicht funktionieren. Nach dem Hinzufügen des 2. und 3. Parameters funktioniert es!Verwenden Sie den folgenden Code in Ihrer XML-Datei. Verwenden Sie android: background = "# 00000000", um die transparente Farbe zu erhalten.
quelle
Sie können die AppCompat-Unterstützungsbibliothek für die randlose Schaltfläche verwenden .
Sie können einen randlosen Button wie folgt erstellen:
Sie können den randlosen farbigen Knopf folgendermaßen erstellen:
quelle
Aus irgendeinem Grund weder
style="Widget.Holo.Button.Borderless"
nochandroid:background="?android:attr/selectableItemBackground"
für mich gearbeitet. Genauer gesagt,Widget.Holo.Button.Borderless
hat die Arbeit unter Android 4.0 erledigt, aber unter Android 2.3.3 nicht funktioniert. Was war der Trick für mich bei beiden Versionenandroid:background="@drawable/transparent"
und dieser XML in res / drawable / transparent.xml:Einfacher Kopf durch die Wand Annäherung.
quelle
android:background="?android:attr/dividerVertical"
Trick gibt.Eine großartige Diashow, wie Sie mit Googles Nick Butcher den gewünschten Effekt erzielen (ab Folie 20). Er verwendet das Standard-Android
@attr
, um den Knopf und den Teiler zu stylen.quelle
Wenn Sie die oberste Antwort hinzufügen, können Sie auch Ansichten mit einer dunkelgrauen Hintergrundfarbe in einem linearen Layout wie diesem verwenden.
Wenn Ihre Linie horizontal ist, sollten Sie die Höhe auf 1 Dip und die Breite so einstellen, dass sie mit der übergeordneten Linie übereinstimmt, und umgekehrt, wenn Ihre Linie vertikal ist.
quelle
Wenn Sie dasselbe programmgesteuert erreichen möchten:
(Dies ist C #, aber leicht auf Java übertragbar.)
Spiel
quelle
Versuchen Sie diesen Code, um den Hintergrund (@ drawable / bg) programmgesteuert zu entfernen. Sie müssen lediglich null als Parameter angeben.
quelle