webentwicklung-frage-antwort-db.com.de

Wie kann ich die Farbe und den Text des Aktionsmodus anpassen?

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

22

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>
32
adneal

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>
23
PleaseTwo

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>

10
Mina Dahesh

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>
4
Jacky Pham

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);
          }
       }
2

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.

2
Wu-Man

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.

1
Chantell Osejo

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.

https://Gist.github.com/coreform/36ed98f98668f2e90c6a

0
straya