我正在使用 NavigationView ,并添加 工具栏 和 include > 。我使用android:layoutDirection="rtl"
,所有api都可以正常工作,但在 api 16 中却无法正常工作。
那我该如何在api 16中从左向右工具栏?
drawer_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
android:layoutDirection="rtl"
tools:openDrawer="end">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/appbar" />
<include
android:id="@+id/appbar"
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:layoutDirection="rtl"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
app_bar_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.activity.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary" />
</android.support.design.widget.AppBarLayout>
</LinearLayout>
MainActivity.java
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
答案 0 :(得分:6)
很遗憾,无法在API 16或更低版本中使用android:layoutDirection="rtl"
。
android:layoutDirection="rtl"
首先包含在API 17及更高版本中。
如果您想了解更多信息,我绝对建议您阅读this文章。
但是在编程中总有解决方案:)
This问题与您的问题相似,也许会为您提供帮助。
答案 1 :(得分:0)
在低于17 的API中无法支持rtl Toolbar
。尝试使用自定义的Toolbar
,例如RtlToolbar。
Build.gradle:
dependencies {
compile 'com.alirezaafkar:toolbar:1.1.2'
}
layout.xml:
<com.alirezaafkar.toolbar.RtlToolbar
android:id="@+id/toolbar_main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:direction="rtl"
app:optionsMenu="@menu/menu_main"
app:font="@string/font_path"
app:navigationIcon="@drawable/ic_menu"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:title="@string/app_name"/>
结果: