如何使导航抽屉切换按钮在工具栏上可见?
How to make Navigation drawer toggle button visible on Toolbar?
我收到错误消息:ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true)
;
但是我已经在我的代码中调用了它,仍然出现同样的错误并且切换按钮不可见。
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//layout variables
mDrawerLayout = findViewById(R.id.main_drawer_layout);
mNavigationView = findViewById(R.id.main_nav_view);
mActionDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
mDrawerLayout.addDrawerListener(mActionDrawerToggle);
mActionDrawerToggle.syncState();
//changed as keeps throws NULLPOINTEXCEPTION
if(getSupportActionBar() != null) {
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// assigning ID of the toolbar to a variable
toolbar = (Toolbar) findViewById(R.id.my_toolbar);
// using toolbar as ActionBar
setSupportActionBar(toolbar); //set
ActionBar actionbar = getSupportActionBar(); //get
actionbar.setTitle("SharePixel");
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeAsUpIndicator(R.drawable.ic_home_menu);
}
setHomeAsUpIndicator()
不会执行,因为 if(getSupportActionBar() != null)
条件在 drawer-based activity 中不应该有效,因为它需要自定义工具栏,您调用设置自定义工具栏之前的这种情况。
除非您的 activity 主题在 styles/themes XML 中设置了 ActionBar
,否则不会实现此条件。 (如果您没有自定义 activity 主题集,那么它是从基本应用程序主题继承的。
解决这个问题:
- 确保您的 activity 主题继承自
NoActionBar
后人;例如 Theme.MaterialComponents.DayNight.NoActionBar
(或者如果您的 activity 没有自定义样式;请在基本应用程序主题上执行)。
- 删除
if(getSupportActionBar() != null)
条件。
我收到错误消息:ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true)
;
但是我已经在我的代码中调用了它,仍然出现同样的错误并且切换按钮不可见。
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//layout variables
mDrawerLayout = findViewById(R.id.main_drawer_layout);
mNavigationView = findViewById(R.id.main_nav_view);
mActionDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
mDrawerLayout.addDrawerListener(mActionDrawerToggle);
mActionDrawerToggle.syncState();
//changed as keeps throws NULLPOINTEXCEPTION
if(getSupportActionBar() != null) {
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// assigning ID of the toolbar to a variable
toolbar = (Toolbar) findViewById(R.id.my_toolbar);
// using toolbar as ActionBar
setSupportActionBar(toolbar); //set
ActionBar actionbar = getSupportActionBar(); //get
actionbar.setTitle("SharePixel");
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeAsUpIndicator(R.drawable.ic_home_menu);
}
setHomeAsUpIndicator()
不会执行,因为 if(getSupportActionBar() != null)
条件在 drawer-based activity 中不应该有效,因为它需要自定义工具栏,您调用设置自定义工具栏之前的这种情况。
除非您的 activity 主题在 styles/themes XML 中设置了 ActionBar
,否则不会实现此条件。 (如果您没有自定义 activity 主题集,那么它是从基本应用程序主题继承的。
解决这个问题:
- 确保您的 activity 主题继承自
NoActionBar
后人;例如Theme.MaterialComponents.DayNight.NoActionBar
(或者如果您的 activity 没有自定义样式;请在基本应用程序主题上执行)。 - 删除
if(getSupportActionBar() != null)
条件。