将多个下拉列表添加到android中的操作栏

时间:2013-09-24 09:05:20

标签: android drop-down-menu android-actionbar

我在android中创建了一个操作栏,下拉列表到操作栏,但问题是我想添加多个下拉列表,它将始终显示在操作栏中

显示的内容是一个下拉菜单,但是Toast消息显示2个所选项目的选择

mainActivity.java

package in.wptrafficanalyzer.actionbardropdownnavigation;

import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {


    /** An array of strings to populate dropdown list */
    String[] actions = new String[] {
        "Bookmark",
        "Subscribe",
        "Share"
    };

    String[] social = new String[] {
            "facebook",
            "twitter",
            "lamelchamel"
        };



    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        /** Create an array adapter to populate dropdownlist */
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);

        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, social);


        /** Enabling dropdown list navigation for the action bar */
        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        /** Defining Navigation listener */
        ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() {

            @Override
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                Toast.makeText(getBaseContext(), "You selected : " + actions[itemPosition] + " and you selected " + social[itemPosition]  , Toast.LENGTH_SHORT).show();
                return false;
            }
        };

        /** Setting dropdown items and item navigation listener for the actionbar */
        getActionBar().setListNavigationCallbacks(adapter, navigationListener);

        getActionBar().setListNavigationCallbacks(adapter2, navigationListener);
    }
}

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

为什么不创建一个指定项目的菜单文件,然后在项目actionLayout中指定您的下拉列表或微调器

<强> menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/one"
          android:icon="@drawable/one"
          android:showAsAction="always"
          android:title="@null"/>
    <item
        android:id="@+id/two"
        android:showAsAction="ifRoom"
        android:onClick="onGroupItemClick"
        android:actionLayout="@layout/another"  />
</menu>

<强> another.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/order" />

在这种情况下,这是一种更严格的方法,并建议,而不是通过代码创建数组只是从xml填充它们,如果它们是常量数据但是如果它是动态的那么你必须通过代码执行此操作创建数组。

您应该在操作栏中使用xml appoach进行菜单。