在我的应用程序中,我想使用menuDrawer菜单
我想设置RTL菜单,我写下面的代码,但没有设置RTL。
菜单中的我的代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="end"
android:gravity="end"
android:layoutDirection="rtl">
<group
android:layout_gravity="end"
android:checkableBehavior="single"
android:gravity="end">
<!-- Recommended icon color code: #828282 -->
<item
android:id="@+id/action_home"
android:layout_gravity="end"
android:gravity="end"
android:icon="@drawable/ic_home"
android:title="@string/site_menu_home" />
<item
android:id="@+id/action_menus"
android:layout_gravity="end"
android:gravity="end"
android:icon="@drawable/ic_menu1"
android:title="@string/site_menu_menus" />
抽屉代码为XML:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:layoutDirection="rtl"
android:background="@color/white"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/menu_drawer" />
我的代码结果是:https://s9.postimg.org/5m000kf3z/Capture_2018-03-25-11-30-57.png
如何修复它并设置RTL菜单?
答案 0 :(得分:0)
在supportsRtl
manifest.xml
<application
....
android:supportsRtl="true"
....
>
</application>
并且无需在 menu.xml
中设置layout_gravity
和gravity
如果您不想使用supportsRtl
,可以使用菜单项的自定义布局。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_home"
android:title="Home"
app:actionLayout="@layout/item_nav_bar" <!-- important part -->
app:showAsAction="ifRoom"/>
</menu>
<强> item_nav_bar.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:padding="10dp">
<ImageView
android:id="@+id/navImage"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_menu_camera"/>
</FrameLayout>
<强> MainActivity.java 强>
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
....
// Changing image in NavigationDrawer
// First Item
MenuItem item1 = navigationView.getMenu().getItem(0);
ImageView img = ((ImageView) item1.getActionView().findViewById(R.id.navImage));
}
}
从代码中删除layoutDirection
,gravities
。
选中此tutorial