usuario studio multiple interfaz con activities android navigation-drawer

android - studio - navigation drawer material design



DrawerLayout debe medirse con el error MeasureSpec.EXACTLY (10)

Asegúrese de que su actividad no sea una actividad de "Diálogo", verifique en el manifiesto. Cometí este error y obtuve el error.

Estoy intentando implementar un cajón de navegación, pero sigo recibiendo este error. Vi las preguntas similares pero no trabajé para mí. Tengo el siguiente diseño 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 actividad_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); }

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

¡Muchas gracias de antemano!


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 realmente tonto por parte de Android. Voy a tratar de presentar un error para ello.


Esto también puede suceder si ha configurado layout_width en wrap_content . En mi caso, se resolvió estableciendo el ancho en match_parent . Espero que esto ayude a alguien.


Got to Build-> Clean project luego Rebuild error de proyecto será resuelto


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>

Luego resolví el problema cambiando 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 match_parent sea match_parent


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

activity.setTheme(R.style.StyledDialogTheme);

Después de que he corregido esto, funciona de nuevo.


Si aún recibe esta excepción, asegúrese de que su actividad esté completa. Pantalla definida En el manifiesto que puede hacer en la Activity :

android:theme="@style/Theme.AppCompat.Light.FullScreen"

O defina esto en styles.xml :

<style name="Theme.AppCompat.Light.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">false</item> <item name="android:windowActionBar">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> </style>


utilizando Android.Support.V4.Widget; utilizando 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); } }


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); }