java – DrawerLayout导航抽屉未显示

前端之家收集整理的这篇文章主要介绍了java – DrawerLayout导航抽屉未显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试在工具栏中显示导航抽屉.我认为我已经编写了所需的一切,但工具栏中没有显示任何内容.只有文字动物园.不是显示导航栏的图标

我是android新手,如果我错过了某些东西,我不会感到惊讶.

这是我的MainActivity.java

  1. package com.example.zoo;
  2. import android.content.res.Configuration;
  3. import android.os.Bundle;
  4. import android.support.design.widget.FloatingActionButton;
  5. import android.support.design.widget.Snackbar;
  6. import android.support.v4.widget.DrawerLayout;
  7. import android.support.v7.app.ActionBarDrawerToggle;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.support.v7.widget.Toolbar;
  10. import android.view.View;
  11. import android.view.Menu;
  12. import android.view.MenuItem;
  13. public class MainActivity extends AppCompatActivity {
  14. private DrawerLayout mDrawerLayout;
  15. private ActionBarDrawerToggle mActionBarDrawerToggle;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  21. setSupportActionBar(toolbar);
  22. getSupportActionBar().setDisplayShowHomeEnabled(true);
  23. getSupportActionBar().setHomeButtonEnabled(true);
  24. mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_Layout);
  25. mActionBarDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.drawer_opened,R.string.drawer_closed){
  26. @Override
  27. public void onDrawerOpened(View drawerView) {
  28. super.onDrawerOpened(drawerView);
  29. if (getSupportActionBar() != null) {
  30. getSupportActionBar().setTitle(R.string.drawer_opened);
  31. }
  32. }
  33. @Override
  34. public void onDrawerClosed(View drawerView) {
  35. super.onDrawerClosed(drawerView);
  36. if (getSupportActionBar() != null) {
  37. getSupportActionBar().setTitle(R.string.drawer_closed);
  38. }
  39. }
  40. };
  41. mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
  42. }
  43. @Override
  44. protected void onPostCreate(Bundle savedInstanceState) {
  45. super.onPostCreate(savedInstanceState);
  46. mActionBarDrawerToggle.syncState();
  47. }
  48. @Override
  49. public void onConfigurationChanged(Configuration newConfig) {
  50. super.onConfigurationChanged(newConfig);
  51. mActionBarDrawerToggle.onConfigurationChanged(newConfig);
  52. }
  53. @Override
  54. public boolean onCreateOptionsMenu(Menu menu) {
  55. // Inflate the menu; this adds items to the action bar if it is present.
  56. getMenuInflater().inflate(R.menu.menu_main,menu);
  57. return true;
  58. }
  59. @Override
  60. public boolean onOptionsItemSelected(MenuItem item) {
  61. // Handle action bar item clicks here. The action bar will
  62. // automatically handle clicks on the Home/Up button,so long
  63. // as you specify a parent activity in AndroidManifest.xml.
  64. if(mActionBarDrawerToggle.onOptionsItemSelected(item))
  65. return true;
  66. int id = item.getItemId();
  67. //noinspection SimplifiableIfStatement
  68. if (id == R.id.action_settings) {
  69. return true;
  70. }
  71. return super.onOptionsItemSelected(item);
  72. }
  73. }

这是我的content_main.xml

当然我有这些字符串名称

最佳答案
问题是这一行:

  1. getSupportActionBar().setDisplayShowHomeEnabled(true);

对于您当前的设置,它应该是:

  1. getSupportActionBar().setDisplayHomeAsUpEnabled(true);

您也可以使用Toggle的五参数构造函数,并将Toolbar对象作为第三个参数传递.

  1. mActionBarDrawerToggle = new ActionBarDrawerToggle(this,toolbar,R.string.drawer_closed) {...};

在这种情况下,您可以省略支持ActionBar set *()调用,并在Toggle上检查onOptionsItemSelected(item).如果您的工具栏未设置为支持ActionBar,这将非常有用.但是,如果工具栏设置如此,则documentation建议使用四参数构造函数,从而推荐当前设置.

猜你在找的Android相关文章