Der Standard-Aktionsmodus (3.0 und höher) verfügt über ein grünes Design und eine Schaltfläche "Fertig" auf der linken Seite. Wie kann ich diese anpassen?
Vielen Dank
Dies ist der Stil, der für jeden ActionMode verwendet wurde. Ich habe ihn aus dem SDK gezogen. Sie müssen Ihren eigenen Stil erstellen, um ihn anzupassen. Es ist wirklich leicht zu machen. Wenn Sie so etwas noch nie gemacht haben, sollten Sie diesen Beitrag über das Anpassen der ActionBar lesen. Es erklärt alles, was Sie wissen müssen.
<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
Lösung für meine Anwendung
<style name="AppTheme" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionModeBackground">@color/bg_action_bar</item>
</style>
mit diesem Code können Sie die Hintergrundfarbe des Aktionsmodus und das DONE-Bild ändern. Hinweis: Sie können Ihren Text auch in Ihr Bild einfügen! in res/styles.xml:
<style name="AppTheme" parent="Android:Theme.Holo">
<item name="Android:actionModeBackground">@Android:color/white</item>
<item name="Android:actionModeCloseDrawable">@drawable/plus</item>
Arbeitete an meinem Projekt
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="actionModeStyle">@style/CustomActionModeStyle</item>
</style>
Benutzerdefinierter ActionMode-Stil
<style name="CustomActionModeStyle" parent="Base.Widget.AppCompat.ActionMode">
<item name="background">@color/color_primary</item>
<item name="titleTextStyle">@style/CustomeActionModeTextStyle</item>
</style>
Aktionsmodus für benutzerdefinierte Titel
<style name="CustomeActionModeTextStyle" parent="TextAppearance.AppCompat.Widget.ActionMode.Title">
<item name="Android:textSize">16sp</item>
<item name="Android:textColor">@color/color_primaryText</item>
</style>
Hier ist mein Ansatz mit Java-Code:
private void customizeActionModeCloseButton(String title, int iconID) {
int buttonId = Resources.getSystem().getIdentifier("action_mode_close_button", "id", "Android");
View v = findViewById(buttonId);
if (v == null) {
buttonId = R.id.abs__action_mode_close_button;
v = findViewById(buttonId);
}
if (v == null)
return;
LinearLayout ll = (LinearLayout) v;
if (ll.getChildCount() > 1 && ll.getChildAt(1) != null) {
//custom icon
ImageView img = (ImageView) ll.getChildAt(0);
img.setImageResource(iconID);
//custom text
TextView tv = (TextView) ll.getChildAt(1);
tv.setText(title);
tv.setTextColor(Color.WHITE);
}
}
Sie können es auf diese Weise nicht wirklich anpassen, da das Attribut actionModeStyle auf API-Ebene 14 eingeführt wird. Für die API-Stufen 11 bis 13 haben Sie kein Glück.
Für API-Ebene 14 können Sie den Stil ändern, indem Sie Android: actionModeStyle in Ihrem Design festlegen.
Aktualisierte Antwort für Pre- und Post-Lollipop-Geräte. Sie müssen das Präfix "Android:" entfernen, damit es auf Lollipop + -Geräten funktioniert:
styles.xml:
<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
v21/styles.xml:
<style name="Widget.ActionMode">
<item name="background">?android:attr/actionModeBackground</item>
<item name="backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="height">?android:attr/actionBarSize</item>
<item name="titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
Ich würde auch empfehlen, Ihren Stil mit parent="@style/Widget.AppCompat.ActionMode"
gesetzt zu haben, damit Sie die Attribute übernehmen, die Sie nicht überschreiben möchten.
Hier ist eine AppCompat-Lösung (d. H. Mit startSupportActionMode), mit der das Bild der Schaltfläche "CAB done" vorübergehend angepasst (angepasst) werden kann. Vorübergehend, da es wünschenswert ist, es wieder zu ändern, um das typische Bild zu verwenden, so dass es beim Anklicken der Textauswahl angemessen erscheint.