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
- Incluyendo fila en la parte inferior del cajón de navegación
- Android - ¿Es posible cajón de navegación desde el lado derecho?
- Android, slidingpanelayout vs navigationDrawer
- Android Navigation Drawer (actividades de llamada) con AbstractMainActivity
- Android cambia el ancho del panel del cajón de navegación mediante programación
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!
- Cambiar el icono del cajón de nuevo a la flecha de retroceso
- LinearLayout $ LayoutParams no se puede convertir en android.support.v4.widget.DrawerLayout $ LayoutParams
- Cambiar el color del ícono del cajón de navegación en la plantilla predeterminada de Android Studio
- Teclado de navegación oculta el teclado cuando onDrawerOpened
- La flecha hacia arriba no se muestra después de llamar a ActionBarDrawerToggle.setDrawerIndicatorEnabled (false)
- Animación de sugerencias de NavigationDrawer (como Google Currents)
- Lista plegable Elemento en la navegación Cajón
- Android: cajón de navegación sin xml
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á
- La red de Android es inaccesible – ENETUNREACH
- He establecido uses-feature android: required = "false", pero Google play sigue insistiendo en estas características