android - DrawerLayout with AppCompat library Illegal Argument Exception -



android - DrawerLayout with AppCompat library Illegal Argument Exception -

i having unusual issue drawer layout , new appcompat in trying create app material designed.

i've done similar activity no problem 1 maintain getting next exception:

java.lang.illegalargumentexception: drawerlayout must measured measurespec.exactly.

below xml layout

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content"> <include layout="@layout/toolbar"/> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <fragment android:name="com.boardiesitsolutions.mysqlmanager.queryeditor" android:id="@+id/fragment_queryeditor" android:layout_width="fill_parent" android:layout_height="wrap_content" tools:layout="@layout/query_editor" /> <fragment android:name="com.boardiesitsolutions.mysqlmanager.resultviewer" android:id="@+id/fragment_resultviewer" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" tools:layout="@layout/query_editor" /> <textview android:id="@+id/query_lblstatus" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:padding="5dp" android:textstyle="bold"/> </linearlayout> <listview xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/left_drawer" android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="start" android:paddingleft="@dimen/list_padding" android:paddingright="@dimen/list_padding" android:choicemode="singlechoice" android:divider="#4e4e4e" android:dividerheight="1dp" android:background="#111" /> <linearlayout android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="end" android:paddingleft="@dimen/list_padding" android:paddingright="@dimen/list_padding" android:background="#4b4b4b"> <textview android:id="@+id/lbldbdetails_notconnected" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:textstyle="bold" android:text="@string/not_connected_to_a_database_use_left_hand_menu_to_connect" android:textcolor="@color/black"/> <expandablelistview android:id="@+id/right_drawer" android:layout_width="fill_parent" android:layout_height="match_parent" android:choicemode="singlechoice" android:divider="#4e4e4e" android:dividerheight="1dp" android:background="#4b4b4b" /> </linearlayout> </android.support.v4.widget.drawerlayout> </linearlayout>

below how set , initialise navigation drawer

toolbar toolbar = (toolbar)findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); appcompatnavigationmanager navmanager = new appcompatnavigationmanager(this, mdrawerlayout, r.string.drawer_open, r.string.drawer_closed); mdrawertoggle = navmanager.setdrawertoggle(toolbar); mdrawerlayout.setdrawerlistener(mdrawertoggle); mdrawertoggle.setdrawerindicatorenabled(true); navmanager.prepareactionbar();

navmanager.setdrawertoggle, returns appcompat drawer toggle next code

public actionbardrawertoggle setdrawertoggle(toolbar toolbar) { actionbardrawertoggle actionbardrawertoggle = new actionbardrawertoggle( activity, drawerlayout, toolbar, draweropen, drawerclosed) { public void ondrawerclosed(view view) { super.ondrawerclosed(view); } public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); } }; homecoming actionbardrawertoggle; }

navmanager.prepareactionbar(); next code:

public void prepareactionbar() { if (android.os.build.version.sdk_int >= android.os.build.version_codes.honeycomb) { activity.getsupportactionbar().setdisplayhomeasupenabled(true); activity.getsupportactionbar().sethomebuttonenabled(true); } }

my class extends actionbaractivity.

i don't understand making activity different causing throw exception.

thanks help can provide.

you need set android:orientation="vertical" , both android:layout_width , layout_height "match_parent" in root linearlayout. can technically leave "fill_parent" value obsolete , maps "match_parent".

the reason "wrap_content" cause parent linearlayout measure kid views using "match_parent" measurement mode at_most. allows find minimum size fit kid views.

<?xml version="1.0" encoding="utf-8"?> <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 navigation-drawer appcompat

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -