我正在开发一个带导航栏的应用程序.现在我正在尝试向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()混淆,后者用于在单击微调器后将丢弃的选项行.
奖金截图!
这就是我的样子.希望能帮助到你!
原文地址:https://www.jb51.cc/android/309188.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。