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()混淆,后者用于在单击微调器后将丢弃的选项行.

奖金截图!

这就是我的样子.希望能帮助到你!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...