Androidアプリのサポートレベルapiが7であるアプリを作成しているため、sherlockアクションバーを使用しています。アクションモードを使用しています。問題は、アクションモードの背景を変更することです。したがって、私が試してみました
<item name="Android:background">@color/something</item>
<item name="Android:backgroundStacked">@color/something</item>
<item name="Android:backgroundSplit">@color/something</item>
actionBarの色を変更したい場合は、次のようにします。
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
詳細については、次の link を参照してください
actionModeを使用している場合これは、任意のActionModeに使用されるスタイルです。カスタマイズするには、独自のスタイルを作成する必要があります
<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>
詳細 このサイト
this も参照
編集
pre-Honeycombについては this を参照してください
私の場合、私はこれで解決しました。最初に、actionModeBackgroundを定義するスタイルを作成しました。
<style name="MyTheme.ActionMode" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionModeBackground">#FFFFFF</item>
</style>
次に、スタイルをベースアプリケーションのテーマに追加します。
<style name="AppTheme" parent="AppBaseTheme">
<item name="Android:actionModeStyle">@style/MyTheme.ActionMode</item>
</style>
それが役に立てば幸い!!!
単純な Action Bar を使用している場合は、これを試してください。
_ActionBar abar = getActionBar();
abar.setBackgroundDrawable(new ColorDrawable(0xff123456));
_
しかし、 Actionbar share lock Lib を使用している場合は、これを試してください
_getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff123456));
_
ColorDrawable(0xff123456)
-カラーコードである必要があります。
Drawable/styles.xml
_ <item name="Android:actionModeBackground">@drawable/actionbar_background</item>
<item name="actionModeBackground">@drawable/actionbar_background</item>
_
APIレベルごとにテーマを変更します
APIレベルに従って変更したい場合は、 this
プログラムで実行する場合(AppCompatをサポート)、アイコンの親ビューを探す必要があります。このコードは2.3.7から6.0.1でテストされています。より低いAPIを確認する必要があります..。
最初にアクティビティの装飾ビューを取得
final ViewGroup decorView = (ViewGroup) getActivity().getWindow().getDecorView();
2番目はonPrepareActionModeで色を設定します。ここで戻るアイコンやその他の要素を設定することもできます
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu)
{
decorView.postDelayed(new Runnable() {
@Override
public void run()
{
int buttonId = getResources().getIdentifier("action_mode_close_button", "id", "Android");
View v = decorView.findViewById(buttonId);
if (v == null)
{
buttonId = R.id.action_mode_close_button;
v = decorView.findViewById(buttonId);
}
if (v != null)
{
((View)v.getParent()).setBackgroundColor(Color.red /*your color here*/);
}
}
}, 500);}
カスタムテーマでこのスタイルをオーバーライドします。
<style name="Base.Widget.AppCompat.ActionMode" parent="">
<item name="background">?attr/actionModeBackground</item>
<item name="backgroundSplit">?attr/actionModeSplitBackground</item>
<item name="height">?attr/actionBarSize</item>
<item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Title</item>
<item name="subtitleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Subtitle</item>
<item name="closeItemLayout">@layout/abc_action_mode_close_item_material</item>
</style>
例えば:
<style name="LywActionMode" parent="Base.Widget.AppCompat.ActionMode">
<item name="background">@color/lyw_primary_color</item>
<item name="backgroundSplit">@color/lyw_primary_color</item>
</style>
<style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="actionModeStyle">@style/LywActionMode</item>
</style>
それを行う最も簡単な方法
ActionBarContextView actionBar = getWindow().getDecorView().findViewById(R.id.action_mode_bar);
actionBar.setBackgroundColor(WhateverColorYouWant);
これは、ActionModeに使用されるスタイルです。SDKからプルしました。カスタマイズするには、独自のスタイルを作成する必要があります。とても簡単です。これまでにこのようなことを一度も行ったことがない場合は、ActionBarのカスタマイズについて この投稿 に目を通してください。それはあなたが知る必要があるすべてのものを説明します。
<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>
まだ苦労していて、既存の解決策のいずれも役に立たない場合は、ツールバー付きのレイアウトに次のことを確認してください:
app:popupTheme="@style/Theme.ToolBar"
Android:popupTheme="@style/Theme.ToolBar"
そしてあなたは持っていません
app:theme="@style/Theme.ToolBar"
競合が発生し、カスタマイズが機能しないためです。
この答えをもっと明確にしたい。まず、ドローアブルフォルダーにカスタムバックグラウンド「storage_list_header_shape.xml」を作成します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<gradient
Android:angle="270"
Android:startColor="@Android:color/holo_orange_light"
Android:centerColor="@Android:color/holo_orange_dark"
Android:endColor="@Android:color/holo_orange_light" />
<size Android:height="3dp" />
</shape>
次に、style.xmlでカスタムスタイルを作成します
<style name="customActionModeTheme" parent="@Android:style/Theme.Holo.Light">
<item name="Android:actionModeBackground">@drawable/storage_list_header_shape</item>
</style>
3番目に、マニフェストでスタイルを呼び出します。
<activity
Android:name="com.javacafe.activities.Main"
Android:launchMode="singleTop"
Android:screenOrientation="sensorLandscape"
Android:theme="@style/customActionModeTheme" >
</activity>