2016-07-31 133 views
0

Activity代码:的Android DrawerLayout与自定义工具栏

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Overview overview = new Overview(); 
    Intent intent = getIntent(); 

    user.setUserName(intent.getStringExtra("Username")); 

    setContentView(R.layout.activity_second); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.mycontainer, overview) 
       .commit(); 
    } 
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 

    toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawerLayout.addDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navView = (NavigationView) findViewById(R.id.navview); 
    navView.setNavigationItemSelectedListener(this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.actionbar_menu, menu); 
    return true; 
} 

// Toggle function for the navigational drawer 
@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    if(toggle.onOptionsItemSelected(item)){ 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

加入这一行后:

getSupportActionBar().setDisplayShowTitleEnabled(false); 

我的抽屉dissapeared。所以我剩下的就是我的actionbar_menu。

我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context=".SecondActivity.SecondActivity" 
    android:id="@+id/drawer_layout"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:gravity="center" 
     android:id="@+id/mycontainer" 
     > 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/my_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:elevation="4dp" 
      android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     /> 

    </LinearLayout> 
    <android.support.design.widget.NavigationView 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="start" 
     android:layout_marginTop="?attr/actionBarSize" 
     android:id="@+id/navview" 
     app:menu="@menu/nav_menu" 
     app:headerLayout="@layout/nav_header" 
     > 

    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

所以基本上,我如何得到我的两个动作条,我DrawerLayout和自定义标题的工作?我必须禁用showTitleEnabled来设置自定义标题,但它会让我的菜单消失。那么我该如何解决这个问题?

回答

0

您可以创建自定义工具栏布局,包括在你的XML,而不是<android.support.v7.widget.Toolbar>

,并在您自定义工具栏布局把TextView

+0

这不会让我的导航抽屉回来。它只会添加一个新的自定义标题 – user3117628

+0

您可以使用'getSupportActionBar()。setDisplayShowHomeEnabled(true);' – SadeghAlavizadeh

0
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

丢失。这修复了它