微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – Spinner在动作栏中只有图标但没有选中的选项

我正在开发一个带导航栏的应用程序.现在我正在尝试向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 举报,一经查实,本站将立刻删除。

相关推荐