嗨,我得到一个运行时异常:
SlidingDrawer cannot have UNSPECIFIED dimensions
从下面的XML,可以有任何帮助.
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10px" android:background="@drawable/formbg"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/label" android:layout_width="120px" android:layout_height="wrap_content" android:text="Question Title" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="5px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <EditText android:id="@+id/entry" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout2" android:layout_below="@id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:paddingRight="0px" > <TextView android:id="@+id/pass" android:layout_width="120px" android:layout_height="wrap_content" android:text="Type Description" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="5px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <EditText android:id="@+id/passentry" android:layout_width="match_parent" android:layout_height="100px" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_below="@id/linearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/labelbounty" android:layout_width="120px" android:layout_height="wrap_content" android:text="Enter Amount $" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="5px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <EditText android:id="@+id/bounty" android:numeric="decimal" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout4" android:layout_below="@id/linearLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/duedatelabel" android:layout_width="120px" android:layout_height="wrap_content" android:text="Due Date" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <Button android:id="@+id/pickDate" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" android:text="Select Due Date"/> </LinearLayout> <LinearLayout android:id="@+id/linearLayout5" android:layout_below="@id/linearLayout4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/labelprimary" android:layout_width="120px" android:layout_height="wrap_content" android:text="Category" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <Spinner android:id="@+id/primarycategory" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt" android:textColor="#000000" android:paddingLeft="15px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout6" android:layout_below="@id/linearLayout5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true"> <TextView android:id="@+id/labelsecondary" android:layout_width="120px" android:layout_height="wrap_content" android:text="Sub Category" android:textStyle="bold" android:textSize="12sp" android:textColor="#000000" android:paddingLeft="10px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> <Spinner android:id="@+id/secondarycategory" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/secondary_category" android:textColor="#000000" android:paddingLeft="15px" android:paddingRight="5px" android:paddingTop="10px" android:paddingBottom="10px" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout7" android:layout_below="@id/linearLayout6" android:layout_width="wrap_content" android:padding="10px" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:paddingRight="10px" android:paddingLeft="10px"> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Add Attachment" > </Button> </LinearLayout> <LinearLayout android:id="@+id/linearLayout8" android:layout_below="@id/linearLayout7" android:layout_width="wrap_content" android:padding="10px" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:paddingRight="10px" android:paddingLeft="10px"> <Button android:id="@+id/askNow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="Post Question" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout9" android:layout_below="@id/linearLayout8" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="bottom" android:orientation="vertical"> <SlidingDrawer android:id="@+id/SlidingDrawer" android:handle="@+id/slideHandleButton" android:content="@+id/contentLayout" android:topOffset="50dip" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/slideHandleButton" android:background="@drawable/closearrow"></Button> <LinearLayout android:id="@+id/contentLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:background="#FF444444"> <Button android:id="@+id/asknew" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ask New Question"></Button> <Button android:id="@+id/logout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Log Out"></Button> </LinearLayout> </SlidingDrawer> </LinearLayout> <android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/preview" android:layout_width="fill_parent" android:layout_height="fill_parent" > </android.view.SurfaceView> </RelativeLayout> </ScrollView>
解决方法
我遇到了同样的问题所以我开始挖掘源代码.基本答案是使用MeasureSpec.UNSPECIFIED在SlidingDrawer上调用measure(),即允许SlidingDrawer设置自己的大小.
它可能是由于包含布局(或其父级)是基础对齐的,或者是WRAP_CONTENT作为其高度或宽度.如果包含LinearLayout的baselineAligned设置为true,则会询问其所有子节点的大小以找到最大的子节点.当然,如果应该将它们包起来,它也要求它们的尺寸.
在任何包含滑动抽屉的LinearLayout中设置android:baselineAligned =“false”,并确保包含SlidingDrawer的任何内容都没有高度或宽度的WRAP_CONTENT.换句话说,SlidingDrawer必须定义一个确切的大小,这意味着如果您使用FILL_PARENT,它的父级也必须.