Android 部分抽屉布局时,工具栏中不显示标题

Android 部分抽屉布局时,工具栏中不显示标题,android,android-layout,Android,Android Layout,我是Android编程新手。 我试图在学习诀窍的同时复制我的IOS应用程序。 我没有使用Android Studio向导来创建任何活动-手动完成所有操作,以便了解发生了什么 我已经使用抽屉布局和工具栏设置了AppCompat活动。 最初,在我注意到抽屉布局的存在之前,我使用RelativeLayout设置了相同的总体设计 当我的工具栏位于相对布局中时,我可以毫无问题地设置它的标题 当我替换RelativeLayout并将工具栏放在抽屉布局中时,标题停止显示 我可以在调试器中看到标题设置正确,只是

我是Android编程新手。 我试图在学习诀窍的同时复制我的IOS应用程序。 我没有使用Android Studio向导来创建任何活动-手动完成所有操作,以便了解发生了什么

我已经使用抽屉布局和工具栏设置了AppCompat活动。 最初,在我注意到抽屉布局的存在之前,我使用RelativeLayout设置了相同的总体设计

当我的工具栏位于相对布局中时,我可以毫无问题地设置它的标题

当我替换RelativeLayout并将工具栏放在抽屉布局中时,标题停止显示

我可以在调试器中看到标题设置正确,只是没有显示出来

我目前正在使用抽屉布局绑定ActionBarDrawerToggle。 以前,我没有使用ActionBarDrawerToggle。 在这两种情况下,工具栏标题都不显示

如果我恢复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>


休息很好。希望能有所帮助。

非常感谢!这确实解决了问题。我读了两个孩子的限制,但我没有怀疑更多,因为工具栏正在显示,我可以改变图标和背景颜色,而不是标题。我想这一定是因为一旦你把所有的东西都放进抽屉里,安卓系统内部的连接方式。再次感谢!非常感谢你!这确实解决了问题。我读了两个孩子的限制,但我没有怀疑更多,因为工具栏正在显示,我可以改变图标和背景颜色,而不是标题。我想这一定是因为一旦你把所有的东西都放进抽屉里,安卓系统内部的连接方式。再次感谢!