89

まず、この質問が以前にここに表示されたことを知っていますが、多くのことを試みた後もまだ成功しませんでした. 私はAndroid Developers siteの例に取り組んでい ます。

例での実装方法(左から右)ではなく、メニューを右から左に開くように設定しようとしています。さらに、メニューを開くボタンをアクションバーの右側に移動したいと考えています。また、この回答など、ここでいくつかの回答を赤くします。

ビューとレイアウトの重力を変更しようとしましたが、エラーが発生しました:

絶対重力 LEFT でドロワー ビューが見つかりません

私のコードの問題点と、メニューを右から開くように設定し、アクション バー ボタンを右側に移動するには、何を変更すればよいかを教えてください。

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" >

    <FrameLayout
        android:id="@+id/content_frame"
        android:layoutDirection="rtl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

    <ListView android:id="@+id/left_drawer"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="10dp"
        android:background="#111"/>

</android.support.v4.widget.DrawerLayout>
4

13 に答える 13

64

次のコードをマニフェストに追加します。

<application android:supportsRtl="true">

次に、Oncreate で次のコードを記述します。

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

わたしにはできる。;)

于 2014-10-08T17:36:26.797 に答える
3

ナビゲーションビューの重力を変更することでこの問題を解決しました

Android:layout_gravity

開始する代わりに終了する

<android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/activity_drawer" />

それは私のために働いた。

于 2017-01-01T13:40:08.710 に答える
3

これを見てください: DrawerLayout フォームの ExpandableListView を右から左にスライドさせます。

ActionBarDrawerToggle が実装されていると仮定します。トリックはonOptionsItemSelected(MenuItem item)、ActionBarDrawerToggle オブジェクト内のメソッドを次のようにオーバーライドすることです。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item != null && item.getItemId() == android.R.id.home) {
            if (mDrawer.isDrawerOpen(Gravity.RIGHT)) {
                mDrawer.closeDrawer(Gravity.RIGHT);
            } else {
                mDrawer.openDrawer(Gravity.RIGHT);
            }
            return true;
        }
        return false;
    }

onOptionsItemSelected(MenuItem item)アクティビティでこれを呼び出してください:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

if(mDrawerToggle.onOptionsItemSelected(item)) {
    return true;
}

return super.onOptionsItemSelected(item);
}

これにより、ホームボタン機能を使用できるようになります。ボタンをアクション バーの右側に移動するには、カスタム アクション アイテムを実装する必要があります。

于 2013-09-13T13:23:58.703 に答える
2

最初に、このコードを AppManifest.xml の application タグに入れる必要があります。

android:supportsRtl="true"

次に、 activity_main.xml ファイルに次のコードを挿入します。

android:layout_direction="rtl"
于 2015-12-26T14:33:54.940 に答える