【问题标题】:how to add spinner to contextual action bar?如何将微调器添加到上下文操作栏?
【发布时间】:2014-08-27 13:14:18
【问题描述】:

就像我的名字一样,我想问......

如何在 galery android 中的上下文操作栏上添加微调器?

现在我可以将标题设置为“1已选择”“2已选择”

这是我的代码

public void lvMainOnLongItemClick(){
    lvMain.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    lvMain.setMultiChoiceModeListener(new MultiChoiceModeListener() {
        private int nr = 0;
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub
            adapter.clearSelection();
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            nr = 0;
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.canvas_main, menu);
            menuEdit = menu.findItem(R.id.menu_edit);
            menuUpload = menu.findItem(R.id.menu_upload);
            menuUpload.setVisible(false);
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // TODO Auto-generated method stub
            switch (item.getItemId()) {
            case R.id.menu_edit:
                Toast.makeText(rbkMain.this, "Edit", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_cancel:
                Toast.makeText(rbkMain.this, "Cancel", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_copy:
                Toast.makeText(rbkMain.this, "Copy", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_upload:
                Toast.makeText(rbkMain.this, "Upload", Toast.LENGTH_SHORT).show();
                break;
            default:
                Toast.makeText(rbkMain.this, "Yihaa", Toast.LENGTH_SHORT).show();
                break;
            }
            return true;
        }

        @Override
        public void onItemCheckedStateChanged(ActionMode mode, int position,long id, boolean checked) {
            // TODO Auto-generated method stub
            if (checked) {
                nr++;
                adapter.setNewSelection(position, checked);
            } else {
                nr--;
                adapter.removeSelection(position);
            }
            if(nr > 1)
                menuEdit.setVisible(false);
            else
                menuEdit.setVisible(true);

            mode.setTitle(nr + " selected");
        }
    });

    lvMain.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
            lvMain.setItemChecked(position, adapter.isPositionChecked(position));
            return false;
        }
    });

非常感谢您的帮助...祝您编码愉快

【问题讨论】:

  • 太棒了,拯救了我的一天!

标签: android


【解决方案1】:

对于常规的 ActionBar,这对我有用 Adding spinner to ActionBar (not Navigation,但对于上下文操作栏,它不起作用。我就是这样弄的,看看能不能帮到你。

对于您的列表视图侦听器,如下所示:

@Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.getMenuInflater().inflate(YOUR_MENU_XML, menu);
            filterSpinner = (Spinner) MenuItemCompat.getActionView(menu.findItem(R.id.menu_overlay_spinner));
            filterSpinner.setAdapter(send2Adapter);
            return true;
        }

菜单 xml 应该是这样的:

<item
    android:icon="@drawable/filter"
    android:id="@+id/menu_overlay_spinner"
    android:title="Spinner"
    app:actionViewClass="android.widget.Spinner"
    app:showAsAction="ifRoom"
    android:actionLayout="@layout/YOUR_ACTION_LAYOUT"/>

最后 actionLayout 只是一个以 Spinner 为根的布局:

<?xml version="1.0" encoding="utf-8"?>
<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

【讨论】:

    【解决方案2】:

    在主Activity的onCreate中

    // This has to be called before setContentView and you must use the 
    // class in android.support.v4.view and NOT android.view
    
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    

    在操作栏中显示/隐藏进度。注意,actionbarsherlock 必须使用 boolean.TRUE/FALSE,而不仅仅是 true/false......

    if (getSupportLoaderManager().hasRunningLoaders()) {
       setProgressBarIndeterminateVisibility(Boolean.TRUE); 
    } else {
       setProgressBarIndeterminateVisibility(Boolean.FALSE); 
    }
    

    【讨论】:

    • 我相信 OP 的意思是 Spinner 在下拉列表框中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多