Actionbar styled overflow menu items

2019-01-19 06:49发布

问题:

I need to make fully custom overflow menu items (different background colors as minimum as showed on picture).

Is it possible?

回答1:

Last day i have to implement Action Bar Sherlock.And my case was same as yours. I have implement Adapter for my navigation List.Let say:

public class MyNavigationAdapter extends BaseAdapter {
    Context mContext = null;
    String[] mTitles;
    LayoutInflater mLayOutInflater = null;

    public MyNavigationAdapter(Context context, String[] titles) {
        this.mContext = context;
        this.mTitles = titles;
        mLayOutInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return mTitles.length;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null)
            view = mLayOutInflater.inflate(R.layout.my_list_custom_row, parent,false);
        TextView rowName = (TextView) view.findViewById(R.id.title);
        rowName.setText(mTitles[position]);
        rowName.setBackground(your desire drawle);// yo

u can also set color etc.
//OR

if(position%2==0)
        rowName.setBackgroundColor(Color.RED);
        else
            rowName.setBackgroundColor(Color.BLUE);
        return view;
    }

}

After this,you have to write these line of code in your Activity onCreate methos.

  ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(mNavigationAdapterObj, mNavigationListner);

for more information .Consult here.



回答2:

You can set a custom view for each MenuItem.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add("test").setActionView(R.layout.custom_action_menu_item);
    return super.onCreateOptionsMenu(menu);
}

http://developer.android.com/reference/android/view/MenuItem.html#setActionView%28int%29



回答3:

This one https://stackoverflow.com/a/14123377/2069363 works for me!

You can create such behavior using Spinner (or IcsSpinner for ActionBarSherlock) in action layout of a menu item. Though you have to use a little trick - hide the currently selected item.