Add these styles
<style name="DropDownListView.ActionBar.Apptheme" parent="@style/DropDownListView.Apptheme">
<item name="android:dividerHeight">1dp</item>
<item name="android:divider">@android:color/white</item>
</style>
<style name="Theme.Apptheme.Widget.ActionBarSpinner">
<item name="android:dropDownListViewStyle">@style/DropDownListView.ActionBar.Apptheme</item>
</style>
And then enable it with:
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
Context themedContext = new ContextThemeWrapper(this, R.style.Theme_Apptheme_Widget_ActionBarSpinner);
Spinner navSpinner = new Spinner(themedContext);
navSpinner.setAdapter(new ActionBarSpinnerAdapter(themedContext, shoppingList));
navSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(MainActivity.this, "Item #" + position + " clicked", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
// do nothing
}
});
actionBar.setCustomView(navSpinner);
Adapter code if you want it:
private class ActionBarSpinnerAdapter extends BaseAdapter
{
public static final int TYPE_CATEGORY = 0;
public static final int TYPE_ITEM = 1;
public static final int MAX_TYPE = 2;
private LayoutInflater mInflater;
private ArrayList<ShoppingListItem> mData;
public ActionBarSpinnerAdapter(Context context, ArrayList<ShoppingListItem> data)
{
mInflater = LayoutInflater.from(context);
mData = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final int type = getItemViewType(position);
if(convertView == null){
final int layoutId;
switch(type){
case TYPE_CATEGORY: layoutId = android.R.layout.preference_category; break;
case TYPE_ITEM: layoutId = android.R.layout.simple_list_item_1; break;
default: throw new IllegalArgumentException("Bad type: " + type);
}
convertView = mInflater.inflate(layoutId, parent, false);
}
TextView textView = (TextView)convertView;
textView.setText(mData.get(position).getName());
return convertView;
}
@Override
public ShoppingListItem getItem(int position)
{
return mData.get(position);
}
@Override
public long getItemId(int position)
{
return mData.get(position).getName().hashCode();
}
@Override
public int getItemViewType(int position)
{
return mData.get(position).getType();
}
@Override
public int getViewTypeCount()
{
return MAX_TYPE;
}
@Override
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public boolean isEnabled(int position)
{
return (getItemViewType(position) != TYPE_CATEGORY);
}
@Override
public int getCount()
{
return mData.size();
}
}