11

アクションモードの「完了」/「閉じる」ボタンのテキストの色を設定します。これは私が試したことです:

<item name="android:actionModeCloseButtonStyle">@style/ActionModeCloseButton</item>
....
<style name="ActionModeCloseButton" parent="android:style/Widget.Holo.ActionButton.CloseMode">
    <item name="android:textColor">@android:color/white</item>
</style>

しかし、効果はありません。

ここに画像の説明を入力してください

JBでは、ActionModeCloseButtonスタイルの親を通常のホロテーマにするだけで十分であることに注意してください。そこでは正常に動作します(textColor設定がなくても)。

何か案は?

4

2 に答える 2

6

まず、テキストビュー「Done」は大型デバイスでのみ表示されます。action_mode_close_item.xmlAndroidソースでチェックアウトします。したがって、android:actionModeCloseButtonStyleのみが含まれているビューに適用され、imageviewとtextviewには適用されません。

幸いなことに、Androidエンジニアは、公的にアクセス可能な属性を使用して、チャイルドビューのスタイルを設定しました。

  • android:actionMenuTextColorTextViewのtextColorに変更するために使用します。
  • android:actionModeCloseDrawableImageViewのドローアブルを変更するために使用します

例:

<style name="MyTheme">
    <item name="android:actionMenuTextColor">#ff000000</item>
    <item name="android:actionModeCloseDrawable">@drawable/my_close_drawable</item>
</style>

以下は、レイアウトがどのように構築されているかを確認できる-folderaction_mode_close_item.xml内ののコピーです。layout-large

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/action_mode_close_button"
        android:focusable="true"
        android:clickable="true"
        android:paddingStart="8dip"
        style="?android:attr/actionModeCloseButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginEnd="16dip">
    <ImageView android:layout_width="48dip"
               android:layout_height="wrap_content"
               android:layout_gravity="center"
               android:scaleType="center"
               android:src="?android:attr/actionModeCloseDrawable" />
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:layout_marginStart="4dip"
              android:layout_marginEnd="16dip"
              android:textAppearance="?android:attr/textAppearanceSmall"
              android:textColor="?android:attr/actionMenuTextColor"
              android:textSize="12sp"
              android:textAllCaps="true"
              android:text="@string/action_mode_done" />
</LinearLayout>
于 2013-06-17T14:10:01.630 に答える
0

アクションモードの閉じるボタンのレイアウトにはテキストビューの色属性がないため、カスタムテーマでこの色を設定する方法はありません。代わりに、私が見つけた唯一のayonPrepareActionMode()は、派生ActionModeクラスのメソッドのテキストの色を上書きすることでした。

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... none) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void none) {
            if (activity != null) {
                LinearLayout layout = (LinearLayout) activity
                            .findViewById(R.id.abs__action_mode_close_button);

                if (layout == null) {
                    int id = Resources.getSystem().getIdentifier(
                                      "action_mode_close_button", "id", "android");
                    layout = (LinearLayout) activity.findViewById(id);
                }

                if (layout != null && layout.getChildCount() > 1) {
                    TextView label = (TextView) layout.getChildAt(1);
                    if (label != null) label.setTextColor(Color.RED);
                }
            }
        }
    }.execute();

    return false;
}

Android4.0の前後の2つのデバイスで動作しました。

于 2013-10-11T13:25:41.617 に答える