DrawerLayout se debe medir con MeasureSpec.EXACTLY error

Estoy tratando de implementar un cajón de navegación, pero sigo recibiendo este error. Vi las preguntas similares, pero no funcionó para mí. Tengo la siguiente disposición activity_main2.xml:

<android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:id="@+id/drawerLayout" android:layout_height="match_parent"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <RelativeLayout android:layout_gravity="left|start" android:layout_width="match_parent" android:background="#fff" android:layout_height="match_parent"> <ListView android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="#eee" android:background="#fff" android:dividerHeight="1dp" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

En mi activity_main2.java

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initView(); if (toolbar != null) { //toolbar.setTitle(""); setSupportActionBar(toolbar); } initDrawer(); } private void initView() { leftDrawerList = (ListView) findViewById(R.id.left_drawer); toolbar = (Toolbar) findViewById(R.id.toolbar); drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); navigationDrawerAdapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_list_item_1, leftSliderData); leftDrawerList.setAdapter(navigationDrawerAdapter); leftDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position == 1){ drawerLayout.closeDrawer(Gravity.LEFT); } } }); } private void initDrawer() { drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); } }; drawerLayout.setDrawerListener(drawerToggle); } 

Espero que alguien me ayude con la dirección correcta.

¡Muchas gracias de antemano!

Mi DrawerLayout estaba dentro de un LinearLayout:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/abohawawallpapersqr" tools:context=".MainActivity"> <include layout="@layout/toolbar" /> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- ...... --> </android.support.v4.widget.DrawerLayout> </LinearLayout> 

Entonces solucioné el problema cambiando el layout_height="wrap_content" a layout_height="match_parent" de LinearLayout . Así que el código es:

 <LinearLayout 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" android:orientation="vertical" android:background="@drawable/abohawawallpapersqr" tools:context=".MainActivity"> 

Para aquellos que aún tienen una excepción, asegúrese de que la altura de su match_parent es match_parent

Asegúrese de que su actividad no es una actividad de "Diálogo", compruebe el manifiesto. Cometí este error y recibí el error.

Esto también puede ocurrir si ha establecido layout_width en wrap_content . En mi caso, se resolvió mediante el ajuste de ancho a match_parent . Espero que esto ayude a alguien.

Esto también puede suceder debido a la nueva ConstraintLayout . Asegúrese de que el diseño del cajón no esté en la jerarquía de ConstraintLayout .

Este es un error muy tonto en la parte de Android. Intentaré archivar un error para él.

Usando Android.Support.V4.Widget; Usando Android.Util;

. . .

  class MyDrawerLayout: DrawerLayout { public MyDrawerLayout(Context context) : base(context) { } public MyDrawerLayout(Context context, IAttributeSet attrs) : base(context, attrs) { } public MyDrawerLayout(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle) { } public MyDrawerLayout(IntPtr context, Android .Runtime.JniHandleOwnership jniHandleOwnership) : base(context, jniHandleOwnership) { } protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec) { widthMeasureSpec = MeasureSpec.MakeMeasureSpec(MeasureSpec.GetSize(widthMeasureSpec), MeasureSpecMode.Exactly); heightMeasureSpec = MeasureSpec.MakeMeasureSpec(MeasureSpec.GetSize(heightMeasureSpec), MeasureSpecMode.Exactly); base.OnMeasure(widthMeasureSpec, heightMeasureSpec); } } 

Por error, establezco un tema de diálogo personalizado en la actividad en lugar de un tema de actividad personalizado:

 activity.setTheme(R.style.StyledDialogTheme); 

Después de corregir esto, funciona de nuevo.

 requestWindowFeature(Window.FEATURE_NO_TITLE); 

Se solucionó mi problema creando la actividad como a continuación;

 @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.mainmenu); } 

Tengo que construir-> Limpiar el proyecto y luego reconstruir el error del proyecto se resolverá

  • Configurar el color de fondo del cajón de navegación
  • Cómo crear mini-menú de cajones en Android?
  • ActionBarDrawerToggle no está configurando el Indicador de cajón
  • Elemento seleccionado en el cajón de navegación
  • ¿Cómo puedo añadir un elemento personalizado a un NavigationView con un diseño de menú?
  • Cajón de navegación de ambos lados izquierdo y derecho en una sola actividad
  • ¿Cómo mostrar la imagen de perfil de Facebook en el cajón de navegación android?
  • El gaviota de navegación de Android no pasa onTouchEvent a la actividad
  • Dos cajones de navegación en la misma actividad
  • Encabezado de grupo de navegación - cómo configurarlo?
  • Cambiar el idioma del elemento navigationdrawer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.