0

I want to insert drawers on each of the layout in my application. This is my xml code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawerActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tableLayoutActivity"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/white"
            android:padding="5dp"
            android:stretchColumns="*">
            <!--   <TableRow android:id="@+id/tableRow0"
                   android:layout_height="wrap_content"
                   android:layout_width="match_parent">
               </TableRow>-->


            <TableRow
                android:id="@+id/tableRow3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="#fff">

                <ScrollView
                    android:id="@+id/queryScrollView"
                    android:layout_width="match_parent"
                    android:layout_span="2"
                    android:padding="5dp">

                    <TableLayout
                        android:id="@+id/queryTableLayoutActivity"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:padding="5dp"
                        android:stretchColumns="*"></TableLayout>
                </ScrollView>
            </TableRow>

        </TableLayout>

    <ListView
        android:id="@+id/navList"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:background="#ffeeeeee"
        android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>

I get this error on running the application (Stacktrace)

Process: com.teamtreehouse.oslist, PID: 2217
                                                                    java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
                                                                        at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:814)
                                                                        at android.view.View.measure(View.java:18788)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                        at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:461)
                                                                        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                        at android.widget.TableLayout.measureVertical(TableLayout.java:473)
                                                                        at android.widget.TableLayout.onMeasure(TableLayout.java:436)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1283)
                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                        at android.widget.ScrollView.onMeasure(ScrollView.java:340)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.widget.TableRow.measureChildBeforeLayout(TableRow.java:222)
                                                                        at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1112)
                                                                        at android.widget.TableRow.onMeasure(TableRow.java:113)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                        at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:461)
                                                                        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                        at android.widget.TableLayout.measureVertical(TableLayout.java:473)
                                                                        at android.widget.TableLayout.onMeasure(TableLayout.java:436)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                        at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1112)
                                                                        at android.widget.LinearLayout.onMeasure(LinearLayout.java:632)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
                                                                        at android.view.View.measure(View.java:18788)
                                                                        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
                                                                        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
                                                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
                                                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                        at android.view.Choreographer.doCallbacks(Choreograp

Similar question but not exact solution required for me

What am I missing in this. I am unable to insert drawer to my layout. Is there a permanent solution for this apart from mentioning exact height and width.

Community
  • 1
  • 1
human
  • 637
  • 4
  • 15
  • 41

1 Answers1

1

DrawerLayout must be measured with MeasureSpec.EXACTLY. You have to put match_parent for the height.

Oliver U.
  • 336
  • 1
  • 4
  • 14
  • kick the tablayout out and try with a other layout just for test – Oliver U. Mar 30 '16 at 21:45
  • it works without table layout. but i need it as i have to add rows of data dynamically – human Mar 30 '16 at 21:52
  • 1
    the tablelayout height is wrap_content – Oliver U. Mar 30 '16 at 22:00
  • even if i change that to match_parent it throws same error – human Mar 30 '16 at 22:04
  • hmm... maybe its the padding. Im not sure. just test a bit around. The error occurs because the drawer needs the full height. I had the same problem once. I only had to change one statement to match_parent. – Oliver U. Mar 30 '16 at 22:23
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/107791/discussion-between-human-and-oliver-u). – human Mar 30 '16 at 22:36