ドロワーレイアウトのサンプルアプリケーションを作成しましたが、問題なく機能します。問題は、ドロワーレイアウトが右から左に完全に機能することですが、アイコンを左から右に移動しようとしていますが、機能しません。これは可能ですか?
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="right" >
<!-- The main content view -->
<FrameLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
/>
<!-- The navigation drawer -->
<ListView
Android:id="@+id/drawer_list"
Android:layout_width="240dp"
Android:layout_height="match_parent"
Android:layout_gravity="right"
Android:background="#111"
Android:choiceMode="singleChoice"
Android:divider="@Android:color/transparent"
Android:dividerHeight="0dp" />
</Android.support.v4.widget.DrawerLayout>
このアイコンはナビゲーションメニューを表します。ナビゲーションメニューは画面の左側に配置する必要があります。ガイドラインに従って、右側にナビゲーションドロワーを配置できますが、これを使用してコンテンツ(フィルターなど)を変更します。このようなすべての目的で、ActionbarItemを使用して、画面の右隅にActionItemを表示することができます。そのアクションアイテムをクリックすると、右側のナビゲーションドロワーが開いたり閉じたりします。
しかし、確かに、デザインに従って、ナビゲーションを表すこのアニメーション化された3行のメニューアイコンは左側にあるものとします。
参考までに、ナビゲーションドロワーを右側に配置するには、ナビゲーションドロワーの重力を次のように変更する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/main_background" >
<!-- The main content view -->
<FrameLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
</FrameLayout>
<!-- The navigation drawer -->
<LinearLayout
Android:id="@+id/right_drawer"
Android:layout_width="280dp"
Android:layout_gravity="end"
Android:layout_height="match_parent"
Android:orientation="vertical" />
</Android.support.v4.widget.DrawerLayout>
また、この場合は本当にナビゲーションメニューアイコンが必要です。右側では、カスタムヘッダーレイアウトまたはActionBarSherlockなどのライブラリを使用して編集します。
これが役に立てば幸いです!
手遅れかもしれませんが、デフォルトのメニューを使用してこれを解決できます。
_res/menu/my_right_side_menu.xml
_を作成する
_<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:myapp="http://schemas.Android.com/apk/res-auto">
<item
Android:id="@+id/btnMyMenu"
Android:icon="@drawable/ic_drawer"
Android:title="Right Side Menu"
myapp:showAsAction="always"/>
</menu>
_
次に、Activity
のonCreateOptionsMenu()
にメニューを追加します
_@Override
public boolean onCreateOptionsMenu(Menu menu) {
int menuToUse = R.menu.my_right_side_menu;
MenuInflater inflater = getMenuInflater();
inflater.inflate(menuToUse, menu);
return super.onCreateOptionsMenu(menu);
}
_
次に、ActionBarDrawerToggle
で、メニュー項目のクリックイベントを処理します
_mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) {
@Override
public boolean onOptionsItemSelected(Android.view.MenuItem item) {
if (item != null && item.getItemId() == R.id.btnMyMenu) {
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
} else {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
return true;
}
return false;
}
};
_
最後に、ActionBar
からホームボタンを非表示にすることを忘れないでください
_getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
_
AppBarLayoutとToolbarを使用する場合は、次のようにします。
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/AppTheme.AppBarOverlay"
Android:layoutDirection="rtl">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</Android.support.design.widget.AppBarLayout>
注意:Android:layoutDirection = "rtl"
これは私の場合に機能した抜け穴のような解決策です。
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar0, R.string.open_nav, R.string.close_nav);
ツールバーを作りました。
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<FrameLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:layout_marginRight="40dp"
Android:layout_marginEnd="40dp"
Android:background="@color/colorPrimary">
<!-- this is your general toolbar-->
<TextView
Android:id="@+id/title"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="right|end|center_vertical"
Android:text="Mytitle"/>
</Android.support.v7.widget.Toolbar>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar0"
Android:layout_width="40dp"
Android:layout_height="?attr/actionBarSize"
Android:layout_gravity="right|end"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<!-- this is your nav-button toolbar-->
</FrameLayout>
</Android.support.design.widget.AppBarLayout>
そのためにonclicklistenerを設定します。
toolbar0.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (drawer.isDrawerOpen(Gravity.RIGHT)) {
drawer.closeDrawer(Gravity.RIGHT);
} else {
drawer.openDrawer(Gravity.RIGHT);
}
}
});
ツールバーがない場合、または私の場合のようにツールバーが必要ない場合は、2つのオプションがあります。 ImageButton を追加するだけの簡単なオプションがあり、このような活動
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="right" >
<!-- The main content view -->
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<FrameLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
/>
<ImageButton
Android:id="@+id/account_icon"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentRight="true"
Android:layout_centerVertical="true"
Android:padding="15dp"
Android:background="@null"
Android:src="@drawable/ic_menu_white_24dp" />
</RelativeLayout>
<!-- The navigation drawer -->
<ListView
Android:id="@+id/drawer_list"
Android:layout_width="240dp"
Android:layout_height="match_parent"
Android:layout_gravity="right"
Android:background="#111"
Android:choiceMode="singleChoice"
Android:divider="@Android:color/transparent"
Android:dividerHeight="0dp" />
リスナーを追加し、drawerLayout.isDrawerOpen()を使用して、通常のif条件でのドロワーの現在の状態、次にドロワーの開閉drawerLayout.openDrawer()とdrawerLayout.closeDrawer();と各メソッドについて、あなたの場合の重力または引き出しビューはリストビューなので、それはこのようなものでなければなりませんdrawer_layout.isDrawerOpen(drawer_list);