Skip to content Skip to sidebar Skip to footer

Illegal Argument Exception - Drawerlayout Must Be Measured With Measurespec.exactly

Stacktrace: 09-10 07:56:56.448 24867-24867/? E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACT

Solution 1:

Error:

Illegal Argument Exception - DrawerLayout must be measured with MeasureSpec.EXACTLY

From error log i can suggest to create custom class that extends DrawerLayout and forcing the correct Measure_Specs:

publicclassMyDrawerLayoutextendsDrawerLayout {

    publicMyDrawerLayout(Context context) {
        super(context);
    }

    publicMyDrawerLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    publicMyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @OverrideprotectedvoidonMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        widthMeasureSpec = MeasureSpec.makeMeasureSpec(
                MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY);
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(
                MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

}

or As a temporary workaround try to set layout_width and/or layout_height to a specific size (e.g. 500dp) instead of match_parent.

EDIT:

BaseActivity.java

import com.steve.database.MyDrawerLayout;

private MyDrawerLayout mDrawerLayout;
private ListView mDrawerList;


LayoutInflatermInflater= (LayoutInflater) getApplicationContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewmCustomView= mInflater.inflate(R.layout.custom_actionbar, null);

mDrawerLayout = (MyDrawerLayout)mCustomView.findViewById(R.id.drawer_layout);
mDrawerList = (ListView)mCustomView.findViewById(R.id.list_menu);

Solution 2:

I tried lots of solution nothing worked.After a long time i found a solution by my self.

i was using Linear Layout as a parent of my inflating class i just replaced with Relative Layout

after that everything is working fine.For your better understanding given below is my code that i am using currently for inflating class

FrameLayoutlayoutContainer= (FrameLayout ) findViewById(R.id.container);
    LayoutInflaterlayoutInflater= (LayoutInflater)
            this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 layoutContainer.addView(layoutInflater.inflate(R.layout.ecom_home_activity, null));

And ecom_home_activity is inflating class.The code of is given below.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/gray_background_color"
android:fillViewport="true"
android:orientation="vertical"
android:scrollbars="none">

<RelativeLayout
    android:id="@+id/no_data_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cc000000"
    android:gravity="center">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:indeterminate="true"
        android:indeterminateTint="@color/offer_activity_background"
        android:indeterminateTintMode="src_atop"
        tools:ignore="UnusedAttribute" />

    <TextView
        android:id="@+id/noDataHeading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/progressBar"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="@string/offerlist_please_wait"
        android:textColor="@color/white_color"
        android:textSize="@dimen/twenty_six_text_size" />

    <TextView
        android:id="@+id/noDataText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/noDataHeading"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="@string/offerlist_while_we_are"
        android:textColor="@color/white_color"
        android:textSize="@dimen/fourteen_size_text" />
</RelativeLayout>

<ImageView
    android:id="@+id/sleeping_bird"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:scaleType="centerInside" />

<TextView
    android:id="@+id/textView_taking_nap"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/sleeping_bird"
    android:layout_marginTop="@dimen/five_dp_margin_padding"
    android:gravity="center"
    android:text="@string/offerlist_coucou_taking_nap"
    android:textSize="@dimen/sixteen_size_text_heading"
    android:visibility="gone" />

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

</LinearLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerListOfferProducts"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:footerDividersEnabled="false"
    android:gravity="center"
    android:headerDividersEnabled="false"
    android:paddingBottom="@dimen/five_dp_margin_padding"
    android:paddingLeft="@dimen/eight_dp_margin_padding"
    android:paddingRight="@dimen/eight_dp_margin_padding"
    android:paddingTop="@dimen/eight_dp_margin_padding"
    android:scrollbars="none" />

Previously i was using Linear layout of ecom_home_activity class i just changed Linear layout with Relative layout

After that everything is working fine.In your case if you are using Linear Layout of your inflating class then Replace with Relative Layout.hope my answer will help you cheers.

Solution 3:

set layout_width and layout_height to specific size, not match_parent or fill_parent.

Solution 4:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns: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"tools:context=".UserListActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentTop="true"android:background="@drawable/common_gradient"android:layoutDirection="rtl"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="0.2"><TextViewandroid:id="@+id/userType_textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:text="نوع المستخدم"android:textColor="#000000"android:textSize="20sp"tools:text="نوع المستخدم" /><TextViewandroid:id="@+id/className_textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/userType_textView"android:layout_centerHorizontal="true"android:text="إسم القسم"android:textColor="#000000"android:textSize="16sp"tools:text="إسم القسم" /><ImageButtonandroid:layout_width="30dp"android:layout_height="20dp"android:layout_alignBottom="@+id/userType_textView"android:layout_marginLeft="15dp"android:layout_marginStart="15dp"android:background="@android:color/transparent"android:contentDescription="@string/desc"android:onClick="showMenuAction"android:scaleType="fitCenter"android:src="@drawable/menu" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="0.8"android:background="#FAFAFA"><SearchViewandroid:id="@+id/user_searchView"android:layout_width="match_parent"android:layout_height="45dp"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:background="#9CC3D7" /><ListViewandroid:id="@+id/users_listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentBottom="true"android:layout_below="@+id/user_searchView"android:layout_centerHorizontal="true"android:divider="#DFDEE1"android:dividerHeight="1dp" /></RelativeLayout></LinearLayout><android.support.v4.widget.DrawerLayoutandroid:id="@+id/navigationDrawerUser"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:layoutDirection="rtl"><ExpandableListViewandroid:id="@+id/menu_listView_user"android:layout_width="240dp"android:layout_height="match_parent"android:layout_gravity="start"android:background="#195269"android:choiceMode="singleChoice"android:divider="#2C637D"android:dividerHeight="1dp"android:groupIndicator="@null"></ExpandableListView></android.support.v4.widget.DrawerLayout>

Post a Comment for "Illegal Argument Exception - Drawerlayout Must Be Measured With Measurespec.exactly"