0

我想使用 SherlockActionBar 在操作栏上添加一个下拉菜单。我在演示中找到了这段代码:

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
            context, R.array.dropdown_items, R.layout.sherlock_spinner_item);
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(list, this);

我想要的是微调菜单项是一个图标,而不是下拉菜单中的第一个/选定项。我怎样才能做到这一点?我试图在自定义 sherlock_spinner_item 中为 textview 设置一个可绘制对象,并将文本设置为空,但它不起作用。谢谢。 在此处输入图像描述

4

2 回答 2

1

A SpinnerAdapter,用于该小部件的适配器类型,允许为下拉布局和选定项目布局指定自定义布局。

从插图中,您可能希望对显示某种代表性图标的选定项目布局使用不同的视图。最好编写自己的类SpinnerAdapter来实现此功能,而不是依赖内置的类之一(如ArrayAdapter)。

于 2012-08-13T15:32:06.223 回答
0

你应该像这样为你的微调器使用自定义适配器

class customAdapter extends ArrayAdapter<String> {
    List<String> stringList;
    Context context;

    public customAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);

        stringList = objects;
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
        View rootView = layoutInflater.inflate(R.layout.spinner_item, parent, false);
        TextView textView = (TextView) rootView.findViewById(R.id.textView);

        textView.setVisibility(View.GONE);

        return rootView;
    }


    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
        View rootView = layoutInflater.inflate(R.layout.spinner_item, parent, false);

        TextView textView = (TextView) rootView.findViewById(R.id.textView);
        ImageView imageView = (ImageView) rootView.findViewById(R.id.imageView);

        textView.setText(stringList.get(position));
        imageView.setVisibility(View.GONE);

        return rootView;
    }

getDropDownView 用于下拉项目,getView 用于微调器标题。

于 2015-09-21T14:01:22.193 回答