代码之家  ›  专栏  ›  技术社区  ›  Revolution3z

导航抽屉RTL[副本]

  •  3
  • Revolution3z  · 技术社区  · 7 年前

    我是这个网站的新手。
    我现在正在android studio中开发应用程序,我正在寻找一个漂亮的菜单,并找到了导航抽屉,我搜索了如何创建自己的导航,但我希望它位于屏幕的右侧。 我该怎么做?

    关于复选框的相同问题,我将复选框放在左侧,文本放在右侧/我希望它是相反的。

    希望你能理解我的问题。

    XML:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello Drawer"
            android:layout_gravity="center"
            android:gravity="center"/>
    </LinearLayout>
    
    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        android:layout_gravity="right">
    </android.support.design.widget.NavigationView>
    
    </android.support.v4.widget.DrawerLayout>
    

    Java:

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout);
        mToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
    
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        if(mToggle.onOptionsItemSelected(item))
        {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   navid    7 年前

    关于右侧导航抽屉。。。我记得我一直在努力解决这个问题。我从任何地方查看了许多答案。他们大多说:使用setLayoutDirection方法,虽然效果很好,但适用于api>=17、我做以下工作:

    0、支持库

     dependencies {
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile 'com.android.support:support-v4:25.3.1'
        compile 'com.android.support:design:25.3.1'
    }
    

    1、布局

    activity\u main。xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:openDrawer="end">
    
        <!--content of your Activity. Could be fragment container. Your toolbar is placed there-->
        <include
            layout="@layout/main_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <android.support.design.widget.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="right|end">
    
            <LinearLayout
                android:id="@+id/navigationLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <!--navigation header. like user profile image &...-->
                <include
                    layout="@layout/drawer_header"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
    
                <!--recycler of your navigation items-->
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/navigationRecycler"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
    
            </LinearLayout>
    
        </android.support.design.widget.NavigationView>
    
    </android.support.v4.widget.DrawerLayout>
    

    main\u内容。xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <RelativeLayout 
            android:id="@+id/toolbarRL"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <ImageButton
                android:id="@+id/toolbarHamburger"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:background="@null"
                android:src="@drawable/hamburger" />
    
        </RelativeLayout>
    
    ... other stuff ...
    
    </RelativeLayout>
    

    2、活动

    //Hamburger icon of your toolbar
                ImageButton hamburger= (ImageButton) findViewById(R.id.toolbarHamburger);
                hamburger.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v){
                        if (drawerLayout.isDrawerOpen(Gravity.RIGHT))
                            drawerLayout.closeDrawer(Gravity.RIGHT);
                        else
                            drawerLayout.openDrawer(Gravity.RIGHT);
                    }
                });
    

    您还应该使用抽屉布局关闭抽屉。单击回收商的物品时关闭抽屉(右重力)。

    关于复选框我不知道是否有任何解决方案来切换文本和CB的位置。但我不会费心去寻找它。我宁愿使用包含CB&的linearLayout;电视:)

    或者,如果我看到它重复,我会创建一个自定义视图。

    CB:复选框,TV:文本视图