How to add subtitle to spinner in the action bar

你说的曾经没有我的故事 提交于 2019-12-10 10:49:17

问题


I have the following

I am using action bar and spinner but what I want to do to add a subtitle to be like City subtitles => All , City 1 , City 2

like this image

I have the following menu xml file

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

<item
        android:id="@+id/filter1"
        android:showAsAction="ifRoom"
        android:orderInCategory="1"
        android:actionViewClass="android.widget.Spinner"
        />

<item
        android:id="@+id/filter2"
        android:showAsAction="ifRoom"
        android:orderInCategory="1"
        android:actionViewClass="android.widget.Spinner" />

</menu>

and this in the Activity

 public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.search_menu, menu);
        mSpinnerItem1 = menu.findItem(R.id.filter1);
        mSpinnerItem2 = menu.findItem(R.id.filter2);

        setupSearchView();
        View view1 = mSpinnerItem1.getActionView();
        if (view1 instanceof Spinner) {
            Spinner spinner = (Spinner) view1;
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.filters, android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                                           int arg2, long arg3) {
                    mDbHelper.open();
                    showResults();
                }

                public void onNothingSelected(AdapterView<?> arg0) {

                }
            });

        }

        View view2 = mSpinnerItem2.getActionView();
        if (view2 instanceof Spinner) {
            Spinner spinner = (Spinner) view2;
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.cities, android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                                           int arg2, long arg3) {

                    mDbHelper.open();
                    showResults();

                }

                public void onNothingSelected(AdapterView<?> arg0) {

                }
            });

        }
        return true;
    }

回答1:


We can achieve this functionality in different way.

custom_toolbar.xml

<android.support.v7.widget.Toolbar>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
             .... For Title
        />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
              ....//For Select things...
            />

            <ImageView
                .... down arrow image
            />
        </LinearLayout>
    </LinearLayout>
</android.support.v7.widget.Toolbar>

For add in mainlayout.xml

 <include
   android:id="@+id/toolbar"
   layout="@layout/custom_toolbar" />

In Activity

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
   if (toolbar != null) {
       setSupportActionBar(toolbar);
   }

And getClick event of textView and Open AlertDialog with setSingleChoiceItems



来源:https://stackoverflow.com/questions/18419483/how-to-add-subtitle-to-spinner-in-the-action-bar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!