首页 > 解决方案 > 制作侧栏后程序总是停止

问题描述

我正在创建一个在我的工具栏下方显示侧栏的应用程序,这是我的代码。

xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorPrimary">

    <TextView
        android:id="@+id/title_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="20sp"
        android:background="@color/colorPrimary"
        />

    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@color/white"
        app:itemTextColor="@color/darkgray"
        app:itemIconTint="@color/darkgray"
        app:menu="@menu/drawermenu"
        android:layout_gravity="start"
        android:id="@+id/drawerLayout"
        >
    </android.support.design.widget.NavigationView>

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

这是我的java

import android.content.DialogInterface;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class test extends AppCompatActivity {

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

        ActionBar mActionBar = getSupportActionBar();
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        LayoutInflater mInflater = LayoutInflater.from(this);

        View mCustomView = mInflater.inflate(R.layout.activity_felcosfafield, null);
        TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
        mTitleTextView.setText("Test");
        mActionBar.setCustomView(mCustomView);
        mActionBar.setDisplayShowCustomEnabled(true);
    }
}

这是 gradles 依赖项

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:27.1.1'
}

我只是按照教程中的说明进行操作,但是当我尝试时,应用程序突然崩溃了,而且我在这里发现了一个错误

DrawerLayout must be measured with MeasureSpec.EXACTLY.

有什么问题?我该如何解决?

标签: androidandroid-studio

解决方案


使用 Lineralayout 作为父布局。

<LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.widget.DrawerLayout
<!-- ...... -->
</android.support.v4.widget.DrawerLayout>
</LinearLayout>

推荐阅读