我正在开发一个带导航栏的应用程序.现在我正在尝试向ActionBar添加一个Spinner.
我可以在ActionBar上获取自定义图标.但是当我向微调器添加条目时,图标将隐藏在选择框后面,并选择第一个项目.
我希望在点击图标时只显示ActionBar中的图标和下拉列表/微调器.
这是我的代码:
private void initializeMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options,menu); View v = (View) menu.findItem(R.id.menuSort).getActionView(); Spinner spinner=(Spinner)v.findViewById(R.id.bookmarks_menu); Bookmark bookmark1 = new Bookmark(); Bookmark bookmark2 = new Bookmark(); List<Bookmark> list = new ArrayList<Bookmark>(); list.add(bookmark1); list.add(bookmark2); SpinAdapter adapter = new SpinAdapter(getApplicationContext(),list); spinner.setAdapter(adapter); }
解决方法
只有图标的Spinner可以通过几个步骤实现.
步骤1
将您想要的图标放在xml中:
<Spinner ... android:background="@drawable/ic_sort_white_24dp" />
第2步
然后,在Spinner的适配器中,覆盖getView(),如下所示:
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list){ @Override public View getView(int position,View convertView,ViewGroup parent) { // this part is needed for hiding the original view View view = super.getView(position,convertView,parent); view.setVisibility(View.GONE); return view; } };
说明
我们需要了解适配器中的getView()是在未打开Spinner时将使用的视图.我们让可见性消失了,因为我们不想看到它,所以剩下的就是来自xml的Spinner的背景,在本例中我已经设置为ic_sort_white_24dp(步骤1).
不要与getDropDownView()混淆,后者用于在单击微调器后将丢弃的选项行.
奖金截图!
这就是我的样子.希望能帮助到你!