@Override public void setDropdownParams( SpinnerAdapter adapter, AdapterViewCompat.OnItemSelectedListener listener) { ensureSpinner(); mSpinner.setAdapter(adapter); mSpinner.setOnItemSelectedListener(listener); }
@Override public void setDropdownSelectedPosition(int position) { if (mSpinner == null) { throw new IllegalStateException("Can't set dropdown selected position without an adapter"); } mSpinner.setSelection(position); }
private void ensureSpinner() { if (mSpinner == null) { mSpinner = new SpinnerCompat(getContext(), null, R.attr.actionDropDownStyle); Toolbar.LayoutParams lp = new Toolbar.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL); mSpinner.setLayoutParams(lp); } }
@Override public void setNavigationMode(int mode) { final int oldMode = mNavigationMode; if (mode != oldMode) { switch (oldMode) { case ActionBar.NAVIGATION_MODE_LIST: if (mSpinner != null && mSpinner.getParent() == mToolbar) { mToolbar.removeView(mSpinner); } break; case ActionBar.NAVIGATION_MODE_TABS: if (mTabView != null && mTabView.getParent() == mToolbar) { mToolbar.removeView(mTabView); } break; } mNavigationMode = mode; switch (mode) { case ActionBar.NAVIGATION_MODE_STANDARD: break; case ActionBar.NAVIGATION_MODE_LIST: ensureSpinner(); mToolbar.addView(mSpinner, 0); break; case ActionBar.NAVIGATION_MODE_TABS: if (mTabView != null) { mToolbar.addView(mTabView, 0); Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams(); lp.width = ViewGroup.LayoutParams.WRAP_CONTENT; lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.START | Gravity.BOTTOM; } break; default: throw new IllegalArgumentException("Invalid navigation mode " + mode); } } }
@Override public int getDropdownItemCount() { return mSpinner != null ? mSpinner.getCount() : 0; }
@Override public int getDropdownSelectedPosition() { return mSpinner != null ? mSpinner.getSelectedItemPosition() : 0; }