выпадающее меню на панели пользовательских действий

#android #android-actionbar

#Android #android-панель действий

Вопрос:

то, что я пытаюсь сделать, это создать панель действий с кнопкой изображения, и то, что я хочу сделать, — это когда я нажимаю кнопку, появляется выпадающее меню с тремя пунктами, и каждый раз, когда я нажимаю элемент, он приводит меня к правильному действию.. вот мой код :

вот xml для панели действий:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@drawable/black_pattern" >

    <TextView
        android:id="@ id/title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAllCaps="true"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#fff"
        android:textStyle="bold" />

    <ImageView
        android:id="@ id/imageView1"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:src="@drawable/ic_launcher" />

    <ImageButton
        android:id="@ id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="8dp"
        android:background="@null"
        android:src="@android:drawable/ic_menu_rotate" />

</RelativeLayout>
  

и вот файл java :

открытый класс MainActivity расширяет активность {

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActionBar mActionBar = getActionBar();
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        LayoutInflater mInflater = LayoutInflater.from(this);

        View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
        TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
        mTitleTextView.setText("My Own Title");

        ImageButton imageButton = (ImageButton) mCustomView
                .findViewById(R.id.imageButton);
        imageButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                Toast.makeText(getApplicationContext(), "Refresh Clicked!",
                        Toast.LENGTH_LONG).show();
            }
        });

        mActionBar.setCustomView(mCustomView);
        mActionBar.setDisplayShowCustomEnabled(true);
    }

}
  

итак, что мне нужно, когда я нажимаю кнопку изображения, появляется выпадающий список со следующими значениями :

 String[] actions = new String[] {
        "Bookmark",
        "Subscribe",
        "Share"
    };
  

и каждый из них приводит меня к правильному действию, я новичок в Android.. пожалуйста, помогите..

Ответ №1:

     package info.androidhive.actionbar;

    import info.androidhive.actionbar.model.SpinnerNavItem;
    import info.androidhive.info.actionbar.adapter.TitleNavigationAdapter;

    import java.util.ArrayList;

    import android.app.ActionBar;
    import android.app.Activity;
    import android.app.SearchManager;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.widget.SearchView;

    public class MainActivity extends Activity implements ActionBar.OnNavigationListener{

        // action bar
        private ActionBar actionBar;

        // Title navigation Spinner data
        private ArrayList<SpinnerNavItem> navSpinner;

        // Navigation adapter
        private TitleNavigationAdapter adapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            actionBar = getActionBar();

            // Hide the action bar title
            actionBar.setDisplayShowTitleEnabled(false);

            // Enabling Spinner dropdown navigation
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

            // Spinner title navigation data
            navSpinner = new ArrayList<SpinnerNavItem>();
            navSpinner.add(new SpinnerNavItem("Local", R.drawable.ic_location));
            navSpinner.add(new SpinnerNavItem("My Places", R.drawable.ic_my_places));
            navSpinner.add(new SpinnerNavItem("Checkins", R.drawable.ic_checkin));
            navSpinner.add(new SpinnerNavItem("Latitude", R.drawable.ic_latitude));     

            // title drop down adapter
            adapter = new TitleNavigationAdapter(getApplicationContext(), navSpinner);

            // assigning the spinner navigation     
            actionBar.setListNavigationCallbacks(adapter, this);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
        ....
        }

        /**
         * On selecting action bar icons
         * */
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        ...
        }

        /**
         * Actionbar navigation item select listener
         * */
        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        // Action to be taken after selecting a spinner item
            return false;
        }
    }


Try This code :


For better understanding go through following link
http://www.androidhive.info/2013/11/android-working-with-action-bar/