Android:Sherlock操作栏下拉菜单,带有自定义视图

时间:2013-10-19 07:40:26

标签: android drop-down-menu actionbarsherlock

也许这是一个重复的问题,如:Android: Sherlock action bar drop down,但答案并没有解决我的问题

我想在sherlock操作栏上使用自定义初始视图实现下拉菜单,如下所示: enter image description here

我的代码可以按照我的意愿成功创建列表,但是当我点击该项时,“onNavigationItemSelected”函数没有收到任何内容

我的代码:

public void someFunction(){             
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setIcon(R.drawable.edit_done);
    getSupportActionBar().setNavigationMode(com.actionbarsherlock.app.ActionBar.NAVIGATION_MODE_LIST);
    final String[] choices = {"Select all"};
    CustomSpinnerAdapter spinnerAdapter = new CustomSpinnerAdapter(MainActivity.getInstance(), android.R.layout.simple_spinner_dropdown_item, choices);
    getSupportActionBar().setListNavigationCallbacks(spinnerAdapter, this);
    spinnerAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    Log.d("OUTPUT", "selected menu position:" + itemPosition);

    return true;
}


private class CustomSpinnerAdapter extends ArrayAdapter<String> implements SpinnerAdapter {
    private LayoutInflater layoutInflater;

    public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] values) {
        super(context, textViewResourceId, values);
        this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return imageview1;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        convertView = layoutInflater.inflate(R.layout.sherlock_spinner_dropdown_item, parent, false);
        ((TextView)convertView).setText("Select all");
        return convertView;
    }

}

正如您所看到的,“onNavigationItemSelected”中的日志仅在调用“somefunction”时出现一次,之后,当您单击列表项时,您将看不到任何日志

希望有人能解决我的问题

1 个答案:

答案 0 :(得分:0)

问题是因为我的列表中只有一个项目,创建列表时只选择了一个项目,并且当您单击已选择的项目时onNavigationItemSelected将不响应,我猜。

我在列表中添加了另一个项目,问题解决了。