微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – SlidingDrawer不能有尺寸

嗨,我得到一个运行时异常:
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,它的父级也必须.

原文地址:https://www.jb51.cc/android/316592.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐