1

デフォルトのアプリ アイコンとオプション メニュー項目がアクション バーの左側に表示されます。オプション メニューをメニュー バーの右側に表示したいと思います。

カスタム ビューを使用してアクション バーの他のボタンを右側に表示しましたが、既定のオプション メニュー項目が左側に表示されたままです。

ナビゲーションドロワーを実装している間、私は基本的にこの問題に直面しています。私のアプリでは、ユーザーはアクション バーの右端に配置されたメニュー項目をタップして、ナビゲーション ドロワーを引き出すことができるはずです。現在、デフォルトの実装では、デフォルトでアクション バーの左側に表示されるオプション メニューをクリックすると、ナビゲーション ドロワーが呼び出されます。

ありがとう!

4

2 に答える 2

0
this is an xml

    <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_gravity="right"

    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <!-- As the main content view, the view below consumes the entire
             space available using match_parent in both dimensions. -->
        <FrameLayout
     android:id="@+id/content_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent" >



        </FrameLayout>





                <ListView
                 android:id="@+id/right_drawer"
                 android:layout_width="400dp"
                 android:layout_height="600dp"
                 android:choiceMode="singleChoice"
                 android:divider="@android:color/transparent"
                 android:dividerHeight="0dp"
                 android:background="#111"/>






    </android.support.v4.widget.DrawerLayout>
于 2013-09-20T06:48:54.837 に答える
0
    Java code :

    @Override
onCreate()
{
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        mDrawerList = (ListView) findViewById(R.id.right_drawer);

        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
                GravityCompat.START);
        mDrawerLayout.setAlpha((float)0.8);


        mDrawerList.setAdapter(adapter);
        mDrawerList.setClickable(false);
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());



mDrawerToggle = new ActionBarDrawerToggle(this, // host Activity
                mDrawerLayout, // DrawerLayout object
                R.drawable.ic_drawer, // nav drawer image to replace 'Up' caret
                R.string.drawer_open, // "open drawer" description for
                                        // accessibility
                R.string.drawer_close // "close drawer" description for
                                        // accessibility
        ) {
            public void onDrawerClosed(View view) {
                // getActionBar().setTitle(mTitle);
                // invalidateOptionsMenu(); // creates call to
                // onPrepareOptionsMenu()
            }

            public void onDrawerOpened(View drawerView) {
                // getActionBar().setTitle(mDrawerTitle);
                // invalidateOptionsMenu(); // creates call to
                // onPrepareOptionsMenu()
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);


        if (savedInstanceState == null) {
            selectItem(0);
        }

}
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            SubMenu filter = menu.addSubMenu(" ");
            subFilter = filter.getItem().setVisible(true);
            filter.setIcon(R.drawable.ico_filter);
            subFilter.setShowAsAction(android.view.MenuItem.SHOW_AS_ACTION_ALWAYS);
            return true;
        }

        public boolean onPrepareOptionsMenu(Menu menu) {
            // If the nav drawer is open, hide action items related to the content
            // view
            boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
            subFilter.setVisible(!drawerOpen);
            return super.onPrepareOptionsMenu(menu);
        }

        public boolean onOptionsItemSelected(MenuItem menuItem) {
            if (menuItem.equals(subFilter)) {
                if (mDrawerLayout.isDrawerOpen(Gravity.END) == true) {
                    mDrawerLayout.closeDrawers();

                } else {
                    mDrawerLayout.openDrawer(Gravity.END);

                }

            } else {
                onBackPressed();

            }

            return true;
        }
于 2013-09-20T06:54:02.917 に答える