10

アクション バーのコンテキスト アクション バー (ActionMode) 部分のスタイル設定についていくつか質問があることは知っていますが、それらは私が求めているものにはまったく対応していないようです。

明るいテーマと暗いアクション バーでツールバーを使用しています。ツールバーは私が欲しいように見えますが、アクションモードは通常のダークテーマのように見えます. 暗いテーマのアクション モード (アクション バーだけでなく) を取得するには、スタイルで何を変更する必要がありますか? CAB をどのように使用したいかを示しているので、タップすることでこれをすばやく実行できるはずですTheme.AppCompatが、アプリケーションの残りの部分を暗くしたくありません。

私は API 14+ だけに関心があり、アクション バーの代わりにサポート ツールバーを使用しています。

これが私のベーススタイルです

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:actionModeBackground">@color/colorActionMode</item>
    <item name="android:windowActionModeOverlay">true</item>
</style>

ツールバーのスタイル

<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
    <item name="actionMenuTextColor">@color/abc_primary_text_material_dark</item>
    <item name="android:textColorSecondary">@color/abc_primary_text_material_dark</item>
    <item name="android:background">@color/colorPrimaryDark</item>
</style>

ツールバー レイアウト ファイル (ここで popupTheme を設定しても効果がないようです)。

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    app:theme="@style/AppTheme.Toolbar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="2dp"
    android:focusable="false"/>

これが私のツールバーです(これが私が望む方法です)

スタイル付きツールバー

これが私のActionModeです(反転する必要があります)

私の行動モード

ActionMode を次のように表示する必要があります (これは、スタイルをTheme.AppCompatの代わりに継承するように変更することで得られましTheme.AppCompat.Light.DarkActionBarた。問題は、アプリケーションの残りの部分が暗くなることです。これは望ましくありません。

ダークアクションモード

4

4 に答える 4

5

actionModeStyle基本テーマの属性をオーバーライドすることから始めます。

<item name="actionModeStyle">@style/LStyled.ActionMode</item>

次のように定義LStyled.ActionModeします。

<style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
    <item name="titleTextStyle">@style/LStyled.ActionMode.Title</item>
    <item name="subtitleTextStyle">@style/LStyled.ActionMode.Subtitle</item>
</style>

ついに:

<style name="LStyled.ActionMode.Title" parent="@style/TextAppearance.AppCompat.Widget.ActionMode.Title">
    <item name="android:textColor">@color/color_action_mode_text</item>
</style>

<style name="LStyled.ActionMode.Subtitle" parent="@style/TextAppearance.AppCompat.Widget.ActionMode.Subtitle">
    <item name="android:textColor">@color/color_action_mode_text</item>
</style>

これは、タイトルとサブタイトル (必要な場合) のテーマで指定されたテキストの色を上書きします。

残っているのはオーバーフロー ボタンです。色置換をサポートする画像編集ソフトウェアを起動します。AppCompat のres/drawable-XXXXフォルダーからオーバーフロー メニュー png を使用します。白く塗ってください。次に、基本テーマをオーバーライドactionOverflowButtonStyleして、変更したばかりの png を指定します。

<item name="actionOverflowButtonStyle">@style/LStyled.OverFlow</item>

<style name="LStyled.OverFlow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
    <item name="android:src">@drawable/modified_overflow_icon</item>
</style>

テーマのカスタマイズに関して提供できる説明/チュートリアルはあまりありません。コツをつかむ唯一の方法は、フレームワークの [styles][themes].xml ファイルを調べることです。ソース コードを読むことも役に立ちます。どの属性が使用されているか、どこでカスタマイズできるかを知ることができます。

言及のポイント:

暗いテーマに組み込まれているのと同じ動作を得るために、スタイルを拡張できるようにしたいと考えています。

はい。ただし、これは望ましくない場合があります。上記のオーバーフロー メニュー アイコンの変更を扱う部分は、オーバーライドされたcolorControlNormal属性に置き換えることができます。TintManager( Link ) からの色の値を使用して、colorControlNormal(他のドローアブルの中でも特に) オーバーフロー メニュー ドローアブルに色合いを付けます。TINT_COLOR_CONTROL_NORMALソース コードの配列の内容を見てください。ただし、colorControlNormal1 つのドローアブルを修正するためにオーバーライドすると、アプリの全体的なルック アンド フィールが悪化する可能性があります。

于 2015-01-28T18:49:18.267 に答える
2

ツールバーのスタイルを暗くする方法を説明している次のブログ投稿を確認してください。

http://android-developers.blogspot.ie/2014/10/appcompat-v21-material-design-for-pre.html

<android.support.v7.widget.Toolbar
    android:layout_height=”wrap_content”
    android:layout_width=”match_parent”
    android:minHeight=”@dimen/triple_height_toolbar”
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

ツールバーの「スタイル」を指定します。あなたが見逃していると思うのは、ツールバーとそのすべての子にスタイルを適用するアプリの名前空間の「テーマ」プロパティです。

編集:これはあなたの特定のケースでうまくいくはずです

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:actionModeBackground">@color/colorActionMode</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>
<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
    <item name="actionMenuTextColor">@color/abc_primary_text_material_dark</item>
    <item name="android:textColorSecondary">@color/abc_primary_text_material_dark</item>
    <item name="android:background">@color/colorPrimaryDark</item>
</style>
于 2015-01-23T20:36:14.957 に答える
1

アクションモードでのオーバーフローボタンやその他のデフォルトコントロールの色付けに固有の、Vikramの回答に追加したいだけです。

アクション モードでこれらのボタンの色を定義する「colorControlNormal」アイテムは、アクション モードのスタイルではなく、アクション バーのテーマに配置する必要があります。そうして初めて、アクションモード内のオーバーフロー、完了、閉じる、および戻るボタンに使用されます。

于 2015-05-05T11:12:08.447 に答える