Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-在ActionBar标题上添加一个微调器_Android_Android Actionbar_Spinner_Android Spinner_Android Actionbar Compat - Fatal编程技术网

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操作时打开微调器