ShareActionProvider
ActionBarSherlock のテーマを設定したいと思います。私の問題は、ActionBar のスタイルを正常にカスタマイズしたことですが、ActionBarSherlock からの共有ポップアップのスタイルを設定できないことです。
上のスクリーンショットでは、共有ポップアップがデフォルトのスタイルを使用しているのに対し、通常のmoreポップアップは私の好みのスタイルになっていることがわかります。
ソースコードをさらに掘り下げたところ、次のActivityChooserView
メソッドが見つかりました。
private IcsListPopupWindow getListPopupWindow() {
if (mListPopupWindow == null) {
mListPopupWindow = new IcsListPopupWindow(getContext());
//...
のポップアップを作成する責任があると私が知っている限りですShareActionProvider
。上記のように、 の新しいインスタンスIcsListPopupWindow
が作成されます。のコンストラクタは次のIcsListPopupWindow
とおりです。
public IcsListPopupWindow(Context context) {
this(context, null, R.attr.listPopupWindowStyle);
}
public IcsListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) {
mContext = context;
mPopup = new PopupWindow(context, attrs, defStyleAttr);
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
}
これまでにcom.actionbarsherlock.R.attr.listPopupWindowStyle
使用された属性。この attr が挿入されている間、と等しいと思われるattrをIcsListPopupWindow
持つ新しい作成された 1 つおよび 2 つのパラメーター コンストラクター:PopupWindow
com.android.internal.R.attr.popupWindowStyle
android.R.attr.popupWindowStyle
public PopupWindow(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.popupWindowStyle);
}
public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
mContext = context;
mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
TypedArray a =
context.obtainStyledAttributes(
attrs, com.android.internal.R.styleable.PopupWindow, defStyleAttr, defStyleRes);
mBackground = a.getDrawable(R.styleable.PopupWindow_popupBackground);
// ...
背景画像が というスタイルから読み込まれていることがわかりますstyleable.PopupWindow_popupBackground
。私はこのxmlファイルで私のスタイルを適用しようとしました:
<style name="Theme.MyStyle" parent="@style/Theme.Sherlock.Light.DarkActionBar">
<!-- ... -->
<item name="actionDropDownStyle">@style/DropDownNav.MyStyle</item>
<item name="dropDownListViewStyle">@style/DropDownListView.MyStyle</item>
<item name="actionBarItemBackground">@drawable/selectable_background_mystyle</item>
<item name="listPopupWindowStyle">@style/DropDownNav.MyStyle</item>
<item name="android:listPopupWindowStyle">@style/DropDownNav.MyStyle</item>
</style>
<style name="DropDownNav.MyStyle" parent="@style/Widget.Sherlock.Spinner.DropDown.ActionBar">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_mystyle</item>
<item name="android:divider">#081925</item>
<item name="android:dividerHeight">1dp</item>
</style>
<style name="DropDownListView.MyStyle" parent="@style/Widget.Sherlock.ListView.DropDown">
<item name="android:divider">#081925</item>
<item name="android:dividerHeight">1dp</item>
</style>
しかし、うまくいきません。私は何を間違っていますか?
ところで、誰かが styleable と私が正しく理解していない attr に関する良いチュートリアルを教えてくれたら、本当に嬉しいです。