Ich mache einen randlosen Flat-Button mit der Support-Bibliothek (23.0.1). Bei Lollipop funktioniert es normal. Jedoch auf Pre-Lollipop, wenn ich den Knopf drücke. Seine Farbe ändert sich in colorButtonNormal
Farbe, als wäre es ein normaler Knopf.
Ich denke nicht, dass dies ein normales Verhalten ist und dass die fokussierte Farbe grau sein sollte wie bei Lollipop.
Hier ist der Screenshot von Lollipop und Pre-Lollipop.
Erstes normales Verhalten bei Lollipop: Randloser Knopf im normalen Zustand und fokussierter Zustand bei Lollipop
Nicht normales Verhalten auf Pre-Lollipop ( Wunschfarbe ist grau wie oben, aber nicht ): Randloser Knopf im Normalzustand und fokussierter Zustand auf Pre-Lollipop
Thema
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
//other stuff
<item name="colorButtonNormal">@color/orangeColor</item>
<item name="buttonBarButtonStyle">@style/BorderlessButtonStyle</item>
</style>
<style name="BorderlessButtonStyle" parent="Widget.AppCompat.Button.Borderless">
<item name="Android:textColor">@color/blueTextColor</item>
</style>
Und jetzt Button im Layout:
<Button
Android:id="@+id/btnForgotPassword"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/forgot_your_password"
style="?attr/buttonBarButtonStyle"
/>
Jeder Weg, es mit AppCompat Theme und Styles schreiben zu lassen, ohne separate Drawables zu erstellen.
Die Borderless-Taste funktioniert sowohl in der Post- als auch in der Pre-Lollipop-Version mit der Support Library. Die onPressed-Farbe unterscheidet sich jedoch geringfügig.
Pre-Lollipop: Standardmäßig ist onPressed color dieselbe Farbe wie die mit colorButtonNormal
festgelegte Button-Farbe.
Lutscher: Standardmäßig ist onPressed Farbe hellgrau, was ideal ist.
Sie können einen randlosen Button wie folgt erstellen:
<Button
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Name"
style="@style/Widget.AppCompat.Button.Borderless"/>
Wenn Sie in allen Versionen dieselbe onPressed-Farbe haben möchten, können Sie colorControlHighlight
in einem neuen Design festlegen und dieses Design auf Button setzen.
<Button
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Name"
Android:theme="@style/BorderlessButton"
style="@style/Widget.AppCompat.Button.Borderless"/>
Und ein Thema in deinem Stil:
<style name="BorderlessButton" parent="Theme.AppCompat.Light">
<item name="colorControlHighlight">YOUR COLOR</item>
</style>
Aktualisiert : Sie können das Android:theme
-Attribut für eine View
seit Android 5.0 Lollipop und AppCompat v22.1.0 (und höher) verwenden.
Das Hinzufügen von style="?attr/borderlessButtonStyle"
zur Button
hat für mich gut funktioniert.
Sie verwenden den Android-implementierten Stil von "buttonBarButtonStyle", da Sie ihn über ?atr
aufrufen - verwenden Sie stattdessen style="@style/BorderlessButtonStyle
.
Bearbeiten: Belassen Sie Ihre XML-Datei so wie sie ist, aber Sie können sie wie folgt in Ihr gewünschtes Verhalten ändern:
AppCompatButton button = (AppCompatButton) findViewById(R.id.btnForgotPassword);
ColorStateList colorStateList = new ColorStateList(new int[][] {{0}}, new int[] {0xFF969696});
//969696 is your wanted grey color, just change it
button.setSupportBackgroundTintList(colorStateList);
warum machst du dir Sorgen mit einigen Dingen, geh einfach damit und sei frei
<Button
Android:id="@+id/btnForgotPassword"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/forgot_your_password"
Android:background="@drawable/abc_btn_borderless_material"
/>
und jetzt sorglos über api-sachen