如何将“导航抽屉”图标设置到“项目文本”的右侧?

时间:2017-11-02 09:19:08

标签: android navigation-drawer drawerlayout

我的项目截图:My Project

我的目标设计:My Target

我创建了一个(从右到左)导航抽屉。它工作正常但是当我试图将图标从左侧移动到右侧时,它不起作用。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:background="@color/nav"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:itemIconTint="#d2a967"
    app:itemTextColor="#d2a967"
    app:menu="@menu/activity_main_drawer" />

注意:我的API是14 +

4 个答案:

答案 0 :(得分:1)

我不确定ActionBar是否提供此类功能。但是你可以通过使用菜单项来实现。 在最右边创建一个菜单:

 <item
    android:id="@+id/menu_action_Drawer"
    android:layout_width="wrap_content"
    app:actionLayout="@layout/item_menu_drawer"
    android:title=""
    app:showAsAction="always"/>

然后OnmenuItem单击打开/关闭抽屉: -

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_action_Drawer:
            if (drawerLayout.isDrawerOpen(GravityCompat.END)) {
                drawerLayout.closeDrawer(GravityCompat.END);
            } else {
                drawerLayout.openDrawer(GravityCompat.END);
            }
            break;
    }
}

答案 1 :(得分:1)

如果目标API为17 +

,请使用此选项打开导航抽屉右侧
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
  }

尝试创建一个新的布局,如下所示

 <TextView
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/tv_badge"
       android:layout_width="wrap_content"
       android:drawableRight="@mipmap/ic_launcher_round"
       android:layout_height="wrap_content" />

使用以下代码将自定义视图设置为导航视图

 YourNavigationView.getMenu().getItem(0).setActionView(R.layout.custom_layout);
  

<强> setActionView(int resId)

     

为此菜单项设置操作视图。

修改

  

尝试此操作来修改单个导航菜单项

TextView  textView = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
textView.setText("ONE");
textView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_favourite, 0, 0);
textView.setTextColor(ContextCompat.getColor(this,R.color.colorPrimary));
navigationView.getMenu().getItem(0).setActionView(textView);

答案 2 :(得分:0)

在setContentView(R.layout.main_activity)之前添加到您的Activity;:

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
    }

这仅适用于API 17 +

答案 3 :(得分:0)

需要在代码中更改以下内容。

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) //call this before super.onCreate
private void forceRtlIfSupported() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
    }
}

AndroidManifiest.xml

android:supportsRtl="true"

注意:这将适用于API 16及更高版本。