Android-在ActionBar标题上添加一个微调器
我愿意添加一个微调器,当我在Android-在ActionBar标题上添加一个微调器,android,android-actionbar,spinner,android-spinner,android-actionbar-compat,Android,Android Actionbar,Spinner,Android Spinner,Android Actionbar Compat,我愿意添加一个微调器,当我在操作栏中单击活动标题时将打开该微调器(我不使用工具栏,而是使用支持操作栏) 我尝试了ActionBar上的方法setListNavigationCallbacks(SpinnerAdapter适配器,ActionBar.OnNavigationListener回调)。它可以工作,但会在标题旁边显示选定的项目 创建时活动的代码 actionBar.setTitle("Title"); actionBar.setNavigationMode(NAVIGATION_MODE
操作栏
中单击活动标题时将打开该微调器(我不使用工具栏
,而是使用支持操作栏
)
我尝试了ActionBar上的方法setListNavigationCallbacks(SpinnerAdapter适配器,ActionBar.OnNavigationListener回调)
。它可以工作,但会在标题旁边显示选定的项目
创建时活动的代码
actionBar.setTitle("Title");
actionBar.setNavigationMode(NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(spinnerAdapter, null);
// spinnerAdapter contains simply numbers from 1 to 10
我知道使用这些方法和使用支持ActionBar而不是工具栏是不可取的,但是在我的项目中通过工具栏更改ActionBar将产生巨大的影响,我将有很多工作要做
如果可能的话,我不想使用任何外部库,因为这显然不是很复杂
谢谢大家! 首先,您必须在res/menu/folder中创建一个xml文件,并添加一个带有id、名称、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>
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;
}
}
打开java活动文件,转到onCreateOptionMenu方法(如果已有),如果没有,则覆盖名为onCreateOptionMenu的新方法,并使用getMenuInflater将其链接到微调器菜单项文件。并将适配器设置为微调器菜单项类。Java活动文件如下所示
<?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>
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;
}
}
公共类SpinnerAndroidActionBarToolBar扩展了AppCompativeActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.android\u actionbar\u工具栏\u微调器\u示例\u布局);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.android\u action\u bar\u spinner\u菜单,菜单);
MenuItem=menu.findItem(R.id.spinner);
微调器微调器=(微调器)MenuItemCompat.getActionView(项);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.spinner\u list\u item\u array,android.R.layout.simple\u spinner\u item);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
返回true;
}
}
首先,您必须在res/menu/folder中创建一个xml文件,并添加一个带有id、名称、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>
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;
}
}
打开java活动文件,转到onCreateOptionMenu方法(如果已有),如果没有,则覆盖名为onCreateOptionMenu的新方法,并使用getMenuInflater将其链接到微调器菜单项文件。并将适配器设置为微调器菜单项类。Java活动文件如下所示
<?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>
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;
}
}
公共类SpinnerAndroidActionBarToolBar扩展了AppCompativeActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.android\u actionbar\u工具栏\u微调器\u示例\u布局);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.android\u action\u bar\u spinner\u菜单,菜单);
MenuItem=menu.findItem(R.id.spinner);
微调器微调器=(微调器)MenuItemCompat.getActionView(项);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.spinner\u list\u item\u array,android.R.layout.simple\u spinner\u item);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
返回true;
}
}
感谢您的回答,但这只会在操作栏的右侧添加一个微调器。。。我想在点击actionbar标题时打开微调器,而不是actionbar操作谢谢你的回答,但这只会在actionbar右侧添加微调器。。。我希望在单击actionbar标题而不是actionbar操作时打开微调器