Android 部分抽屉布局时,工具栏中不显示标题
我是Android编程新手。 我试图在学习诀窍的同时复制我的IOS应用程序。 我没有使用Android Studio向导来创建任何活动-手动完成所有操作,以便了解发生了什么 我已经使用抽屉布局和工具栏设置了AppCompat活动。 最初,在我注意到抽屉布局的存在之前,我使用RelativeLayout设置了相同的总体设计 当我的工具栏位于相对布局中时,我可以毫无问题地设置它的标题 当我替换RelativeLayout并将工具栏放在抽屉布局中时,标题停止显示 我可以在调试器中看到标题设置正确,只是没有显示出来 我目前正在使用抽屉布局绑定ActionBarDrawerToggle。 以前,我没有使用ActionBarDrawerToggle。 在这两种情况下,工具栏标题都不显示 如果我恢复RelativeLayout,标题将再次显示 我找遍了世界各地,但找不到解决办法 活动的布局如下所示:Android 部分抽屉布局时,工具栏中不显示标题,android,android-layout,Android,Android Layout,我是Android编程新手。 我试图在学习诀窍的同时复制我的IOS应用程序。 我没有使用Android Studio向导来创建任何活动-手动完成所有操作,以便了解发生了什么 我已经使用抽屉布局和工具栏设置了AppCompat活动。 最初,在我注意到抽屉布局的存在之前,我使用RelativeLayout设置了相同的总体设计 当我的工具栏位于相对布局中时,我可以毫无问题地设置它的标题 当我替换RelativeLayout并将工具栏放在抽屉布局中时,标题停止显示 我可以在调试器中看到标题设置正确,只是
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/app_drawer">
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/fragment_items_list_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_marginTop="52dp"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="256dp"
android:layout_height="match_parent"
android:background="@color/lightGray"
android:id="@+id/fragment_nav_list_container"
android:layout_gravity="start"
/>
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import DatabaseMaster;
public class MainWrapperActivity extends AppCompatActivity {
class MainWrapperDrawerToggle extends ActionBarDrawerToggle {
public MainWrapperDrawerToggle(Activity activity, DrawerLayout drawerLayout, int openDrawerContentDescRes, int closeDrawerContentDescRes) {
super(activity, drawerLayout, openDrawerContentDescRes, closeDrawerContentDescRes);
}
public MainWrapperDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes) {
super(activity, drawerLayout, toolbar, openDrawerContentDescRes, closeDrawerContentDescRes);
}
// Drawer Listener
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView,slideOffset);
Log.d("debug","Main App Drawer: SLIDE");
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
Log.d("debug","Main App Drawer: OPENED");
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
Log.d("debug","Main App Drawer: CLOSED");
}
@Override
public void onDrawerStateChanged(int newState) {
super.onDrawerStateChanged(newState);
Log.d("debug", "Main App Drawer: STATE CHANGED: " + newState);
}
}
private MainWrapperDrawerToggle mActionBarDrawerToggle;
private DrawerLayout mDrawerLayout;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_wrapper);
// Add / Configure Toolbar
mToolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
// Setup App Drawer
mDrawerLayout=(DrawerLayout)findViewById(R.id.app_drawer);
mActionBarDrawerToggle=new MainWrapperDrawerToggle(this,mDrawerLayout,mToolbar,R.string.app_name,R.string.app_name);
mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);
//getSupportActionBar().setHomeButtonEnabled(true);
//getSupportActionBar().setDisplayShowTitleEnabled(false);
//mActionBarDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_nav_menu);
// Add Fragment(s)
FragmentManager fm=getSupportFragmentManager();
// Check for existing fragment by the ID of its Container
Fragment fragment=fm.findFragmentById(R.id.fragment_items_list_container);
if (fragment == null) {
fragment=new SectionsListFragment();
// Add fragment to it's Container
fm.beginTransaction().add(R.id.fragment_items_list_container,fragment).commit();
}
}
@Override
protected void onPostCreate (Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mActionBarDrawerToggle.syncState();
mToolbar.setNavigationIcon(R.drawable.ic_nav_menu);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mActionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
protected void onStart () {
super.onStart();
}
@Override
protected void onResume () {
super.onResume();
TextView toolbarTitleView=(TextView)mToolbar.findViewById(R.id.toolbar_title);
toolbarTitleView.setText(R.string.app_name);
}
@Override
protected void onDestroy () {
DatabaseMaster.getInstance().getRealm().close();
DatabaseMaster.getInstance().setRealm(null);
super.onDestroy();
}
@Override
public boolean onSupportNavigateUp () {
Log.i("debug", "Toggling hamburger menu");
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
} else {
mDrawerLayout.openDrawer(GravityCompat.START);
}
return false;
}
}
抽屉布局仅包含两个子项,即仅两个布局。您可以将您的框架布局替换为另一个RelativeLayout,然后放置您的框架布局,并在新的RelativeLayout中包含标记
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/app_drawer">
<include layout="@layout/new_container"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="256dp"
android:layout_height="match_parent"
android:background="@color/lightGray"
android:id="@+id/fragment_nav_list_container"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
在相对布局中使用
<RelativeLayout
android:id="@+id/new_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/fragment_items_list_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"/>
</RelativeLayout>
其余的没问题。希望有帮助。抽屉布局只包含两个子项,即只有两个布局。您可以将您的框架布局替换为另一个RelativeLayout,然后放置您的框架布局,并在新的RelativeLayout中包含标记
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/app_drawer">
<include layout="@layout/new_container"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="256dp"
android:layout_height="match_parent"
android:background="@color/lightGray"
android:id="@+id/fragment_nav_list_container"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
在相对布局中使用
<RelativeLayout
android:id="@+id/new_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/fragment_items_list_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"/>
</RelativeLayout>
休息很好。希望能有所帮助。非常感谢!这确实解决了问题。我读了两个孩子的限制,但我没有怀疑更多,因为工具栏正在显示,我可以改变图标和背景颜色,而不是标题。我想这一定是因为一旦你把所有的东西都放进抽屉里,安卓系统内部的连接方式。再次感谢!非常感谢你!这确实解决了问题。我读了两个孩子的限制,但我没有怀疑更多,因为工具栏正在显示,我可以改变图标和背景颜色,而不是标题。我想这一定是因为一旦你把所有的东西都放进抽屉里,安卓系统内部的连接方式。再次感谢!