【问题标题】:Why is the navigation drawer icon missing?为什么导航抽屉图标不见了?
【发布时间】:2020-06-26 17:06:38
【问题描述】:

我需要在活动的右上角显示Navigation drawer 图标。我已经包含了无法正常工作的代码。我正在使用 android Studio 3.5.3,最新版本

Java 代码:

  package com.example.myapplication;
  import android.os.Bundle;
  import com.google.android.material.floatingactionbutton.FloatingActionButton;
  import com.google.android.material.snackbar.Snackbar;
  import android.view.View;
  import androidx.navigation.NavController;
  import androidx.navigation.Navigation;
  import androidx.navigation.ui.AppBarConfiguration;
  import androidx.navigation.ui.NavigationUI;
  import com.google.android.material.navigation.NavigationView;
  import androidx.drawerlayout.widget.DrawerLayout;
  import androidx.appcompat.app.AppCompatActivity;
  import androidx.appcompat.widget.Toolbar;
  import android.view.Menu;

  public class MainActivity extends AppCompatActivity {

  private AppBarConfiguration mAppBarConfiguration;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
            R.id.nav_tools, R.id.nav_share, R.id.nav_send)
            .setDrawerLayout(drawer)
            .build();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
 }
}

我对 Java 和 XML 代码进行了一些更改。我是 Android Studio 的初学者。请帮我改正错误。

这是 XML 代码

   <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout 
     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"
     app:layout_behavior="@string/appbar_scrolling_view_behavior"
     tools:showIn="@layout/app_bar_main">
  </RelativeLayout>

【问题讨论】:

  • 欢迎来到 StackOverlow!正如您目前所写的问题一样,您想要实现的目标有点不清楚。请详细说明您已经尝试解决问题的方法以及失败的地方。此外,请尝试将您的代码示例减少到minimal, reproducible example 并查看this help page。干杯:)
  • 为避免所有问题,使用 Navigation Drawer Activity 创建一个新项目:Android Studio -> File -> New -> New Project -> Navigation Drawer Activity 并点击 下一步
  • 您在 Java 和 XML 代码中犯了很多错误。尝试创建新项目并检查
  • 这能回答你的问题吗? Navigation Drawer Icon (ic_drawer) not showing

标签: android navigation-drawer android-xml androidx


【解决方案1】:

尝试添加这个:

supportActionBar?.setDisplayHomeAsUpEnabled(true)

在安卓中:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

您可能无法打开菜单。之后添加:(在 kotlin 中)

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    super.onOptionsItemSelected(item)
    return when (item.itemId) {
        android.R.id.home -> {
            drawer_layout.openDrawer(GravityCompat.START)
            true
        }
        else -> super.onOptionsItemSelected(item)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    相关资源
    最近更新 更多