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