我愿意添加一个Spinner,当我点击ActionBar
中的活动标题时我会打开它(我不会使用Toolbar
,我使用支持ActionBar
)。
我尝试使用ActionBar上的方法setListNavigationCallbacks(SpinnerAdapter adapter, ActionBar.OnNavigationListener callback)
。它有效,但它会在标题旁边显示所选项目。
活动代码
actionBar.setTitle("Title");
actionBar.setNavigationMode(NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(spinnerAdapter, null);
// spinnerAdapter contains simply numbers from 1 to 10
我知道使用这些方法并使用支持ActionBar而不是工具栏已被弃用,但在我的项目中通过工具栏更改ActionBar会产生巨大影响,我将有很多工作要做......
如果可能的话,我不想使用任何外部库,因为这显然不是很复杂。
谢谢!
答案 0 :(得分:0)
首先,您必须在res / menu /文件夹中创建一个xml文件,并添加一个id,name,actionViewClass的菜单项。菜单项文件如下所示。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/spinner"
android:title="ActionBar Spinner"
app:actionViewClass="android.widget.Spinner"
android:background="#ff00"
app:showAsAction="always" />
</menu>
打开java活动文件,如果已经有onCreateOptionMenu方法,则转到onCreateOptionMenu方法,如果没有,则覆盖名为onCreateOptionMenu的新方法,并使用getMenuInflater将其链接到微调器菜单项文件。并将适配器设置为微调器菜单项类。 Java活动文件如下所示。
public class SpinnerAndroidActionBarToolBar extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android_actionbar_toolbar_spinner_example_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.android_action_bar_spinner_menu, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinner_list_item_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
return true;
}
}