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 でテキスト ビューにドローアブルを設定し、テキストを空に設定しようとしましたが、機能しません。ありがとう。 ここに画像の説明を入力

4

2 に答える 2

1

SpinnerAdapterそのウィジェットに使用されるアダプターのタイプであるAを使用すると、ドロップダウン レイアウトと選択したアイテム レイアウトの両方にカスタム レイアウトを指定できます。

図から、何らかの代表的なアイコンを表示する、選択したアイテムのレイアウトに別のビューを使用したいと思うでしょう。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 に答える