问题
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