Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
Java 在右侧列出导航(微调器)_Java_Android_Android Actionbar_Actionbarsherlock_Android Spinner - Fatal编程技术网

Java 在右侧列出导航(微调器)

Java 在右侧列出导航(微调器),java,android,android-actionbar,actionbarsherlock,android-spinner,Java,Android,Android Actionbar,Actionbarsherlock,Android Spinner,我已经尝试了很多教程,但我找不到一篇文章告诉我如何在action bar(夏洛克版)中创建微调器,但在右边 有办法吗?我是否需要创建其他视图和适配器?我只想知道在右侧创建微调器的简单方法,不需要别的,只需要它。您需要为包含微调器的视图创建自定义布局。充气并放在动作杆上,你就可以开始了 这里有一些示例代码(这是您在活动中初始化布局并将其放置在操作栏上所做的操作): LayoutInflater充气器=(LayoutInflater)getSupportActionBar().getThemedCo

我已经尝试了很多教程,但我找不到一篇文章告诉我如何在action bar(夏洛克版)中创建微调器,但在右边


有办法吗?我是否需要创建其他视图和适配器?我只想知道在右侧创建微调器的简单方法,不需要别的,只需要它。

您需要为包含微调器的视图创建自定义布局。充气并放在动作杆上,你就可以开始了

这里有一些示例代码(这是您在活动中初始化布局并将其放置在操作栏上所做的操作):

LayoutInflater充气器=(LayoutInflater)getSupportActionBar().getThemedContext().getSystemService(布局充气器服务);
最终视图spinnerView=充气器。充气(R.layout.layout_微调器,空);
微调器微调器=(微调器)微调器视图.findViewById(R.id.my_微调器);
ArrayAdapter=ArrayAdapter.createFromResource(this,R.array.spinner\u items\u array,R.layout.spinner\u item);
adapter.setDropDownViewResource(R.layout.spinner\u下拉项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
//对所选项目执行任何操作。您可以通过以下方式获得它:parent.getItemAtPosition(position);
}
@凌驾
未选择的公共无效(AdapterView父项){}
});
getSupportActionBar().setIcon(getResources().getDrawable(R.drawable.ic_actionbar_徽标))//设置您的actionbar徽标
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE);
LayoutParams LayoutParams=新建ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_内容,ViewGroup.LayoutParams.MATCH_父级);
layoutParams.gravity=gravity.RIGHT;//将布局的重力设置为“右”
getSupportActionBar().setCustomView(spinnerView,layoutParams)//将布局放在操作栏上
您的布局应该如下所示(layout_spinner.xml):


存储在res文件夹中的数组(微调器\u项目\u数组):


项目1
项目2
微调器自定义项(spinner\u item.xml):


最后是下拉列表项(spinner\u dropdown\u item.xml):


我希望这个答案能帮助你!!
祝你好运

很好的例子,谢谢。我遵循您的代码,并设法使微调器正确对齐。唯一困扰我的是,当我将这个自定义视图(微调器)设置为actionBar时,我的actionBar标题就消失了。我设置了ActionBar.DISPLAY\u SHOW\u标题选项,但标题仍然缺失。你知道为什么会这样吗?我想在我的动作栏中同时显示标题和微调器……你的目标是什么操作系统?在上面的实现中,您应该可以在actionbar上看到Up图标、actionbar图标、标题和微调器。这些行发挥了神奇的作用:getSupportActionBar().setIcon(getResources().getDrawable(R.drawable.ic_actionbar_logo))//设置您的actionbar徽标getSupportActionBar().setDisplayOptions(actionbar.DISPLAY_SHOW_CUSTOM | actionbar.DISPLAY_SHOW_HOME | actionbar.DISPLAY_HOME_AS_UP | actionbar.DISPLAY_SHOW_TITLE);我正在一台4.4.2安卓设备上试用。不工作了。。。但是+1使微调器向右旋转Sandra,我刚刚尝试了上面的实现,它工作得很好(在同一个操作系统上)。确实要为活动添加标题吗?或者你不打算把它移走?如果您在这里提供一些代码,我可能会帮助您。
    LayoutInflater inflater = (LayoutInflater) getSupportActionBar().getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);

    final View spinnerView = inflater.inflate(R.layout.layout_spinner, null);
    Spinner spinner = (Spinner) spinnerView.findViewById(R.id.my_spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_items_array, R.layout.spinner_item);
    adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            // Do whatever you want with your selected item. You can get it as: parent.getItemAtPosition(position); 
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {}
    });

    getSupportActionBar().setIcon(getResources().getDrawable(R.drawable.ic_actionbar_logo));//set your actionbar logo
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE );

    LayoutParams layoutParams = new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
    layoutParams.gravity = Gravity.RIGHT; // set your layout's gravity to 'right'
    getSupportActionBar().setCustomView(spinnerView, layoutParams); //place your layout on the actionbar
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Spinner
    style="@style/Widget.Sherlock.Light.Spinner.DropDown.ActionBar"
    android:id="@+id/my_spinner"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="right" />

</LinearLayout>
    <string-array name="spinner_items_array">
        <item>Item1</item>
        <item>Item2</item>
    </string-array>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/cab_spinner_item"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textAlignment="inherit"
    android:textColor="@android:color/white" /> <!-- Set whatever color you want for the text -->
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textAlignment="inherit"
    android:textColor="@android:color/white" />