2

アクション アイテムにアタッチされたカスタムドロップダウン メニューが必要です。ホームアイコンは何とかできましたが、他のアクションアイテムとは全然違うようです。

私はこの質問と回答を知っています:アクション バーにドロップダウン項目を追加する方法 私の問題は、それを完全にカスタマイズしたい (カスタム フォントを使用し、アイコンも必要になる) ことです。そのため、サブメニューでは不十分だと思います。そして、カスタムSpinneractionLayoutドロップダウンのようには見えません。

ホーム アイコンの場合は、次のようになります。

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    ArrayList<NavItem> data = new ArrayList<NavItem>();
    data.add(...);
    data.add(...);
    ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
    actionBar.setListNavigationCallbacks(adapter, new OnNavigationListener() {...});

また、「ドロップダウン」を犠牲にすることなく、独自のデザインを追加することができました。 他のアクションアイテムでそれを行う方法は?

編集: アクティビティをNAVIGATION_MODE_LIST使用することは知っていますSpinner(ListNavigationCallbacks は を使用しますSpinnerAdapter) が、見栄えが良く、そのように見せるためにこれらすべてのスタイルを取得する場所がわかりません (それだけの場合)。つまり:

良い-> どのようNAVIGATION_MODE_LISTに見えるか: リストをラップしていて、ホームアイコンの下に付いています。 悪い-> カスタムSpinneractionLayout外観: 画面の幅に暗い背景を追加し、アクション アイテムのアイコンを置き換え (これは簡単に変更できます)、何よりも、画面の残りの部分を暗くします。ドロップダウン メニューではなく、カスタム リストを持つ AlertDialog のように見えます。

コード:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem sortItem = menu.findItem(R.id.sort);
    Spinner spinner = new Spinner(this);

    //this is the same adapter because I didn't want to spend time creating a new one
    //ActionBarNavAdapter extends SpinnerAdapter of course
    ArrayList<NavItem> data = new ArrayList<NavItem>();
    data.add(...);
    data.add(...);
    ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
    spinner.setAdapter(adapter);
    sortItem.setActionView(spinner);
    return true;
}
4

1 に答える 1

3

置き換えてみてください:

Spinner spinner = new Spinner(this);

と:

Spinner spinner = new Spinner(getActionBar().getThemedContext());

これはContext、アクションバーに一致するテーマを使用し、役立つはずです.

于 2012-08-31T23:13:29.277 に答える