android - 总是收到错误消息 : No drawer view found with gravity LEFT

标签 android navigation-drawer slidingdrawer

我正在开发一个应用程序,但我在抽屉布局方面遇到了一些问题。我总是收到标题中提到的错误消息,但我没有 LEFT 值的重力。我所拥有的只是具有 END 值的重力,仅此而已。 这是我的 Java 代码:

public class HomeActivity extends AppCompatActivity {

private ActionBarDrawerToggle toggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    Toolbar mainToolBar =findViewById(R.id.main_page_toolbar);
    DrawerLayout mainDrawerLayout = findViewById(R.id.main_page_drawer_layout);
    NavigationView mainNavigationView = findViewById(R.id.main_page_navigation_view);

    setSupportActionBar(mainToolBar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setHomeButtonEnabled(true);


    toggle = new ActionBarDrawerToggle(this,mainDrawerLayout,mainToolBar,R.string.openDrawer,R.string.closeDrawer);
    mainDrawerLayout.addDrawerListener(toggle);
    toggle.syncState();

}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    toggle.onConfigurationChanged(newConfig);
}
}

这是我的 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:openDrawer="end"
 tools:context=".Activities.HomeActivity"
 android:id="@+id/main_page_drawer_layout"
 android:fitsSystemWindows="true">

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/home_main_page"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>


<com.google.android.material.navigation.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:headerLayout="@layout/home_side_menu_header_layout"
    app:menu="@menu/home_side_menu"
    android:layoutDirection="rtl"
    android:id="@+id/main_page_navigation_view"/>

最佳答案

您需要处理导航,点击工具栏,如下所示:

mainToolBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mainDrawerLayout.isDrawerOpen(GravityCompat.END))
            mainDrawerLayout.closeDrawer(GravityCompat.END);
        else
            mainDrawerLayout.openDrawer(GravityCompat.END);
    }
});

也不要忘记在需要时关闭抽屉,如下所示:

mainDrawerLayout.closeDrawer(GravityCompat.END)

关于android - 总是收到错误消息 : No drawer view found with gravity LEFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582701/

相关文章:

android - MPAndroidChart - 如何将搜索栏与 x 轴对齐以跳过额外的填充?

android - 数据绑定(bind) : How to get resource by dynamic id?

java - 将图像上传到 android 中的 azure blob 存储时出现 nullpointerException

android - 如何检测抽屉导航已通过边缘滑动(而不是主页图标)打开?

java - 滑动抽屉下的内容 - Android

java - Alljoyn 框架 - Java - 信号。 BUS_NO_SUCH_INTERFACE

android - 设置抽屉导航的背景颜色

android - 广告尺寸和广告单元 ID 必须在调用 loadAd 之前设置。应用程序正在崩溃

android - 非对话子菜单?

android - 如何在代码中创建滑动抽屉?