1

从 Android SDK 复制 SlidingDrawer 代码并将其导入我的项目时,我得到了一个 IAE。

java.lang.IllegalArgumentException:handle 属性是必需的,并且必须引用有效的子项。

这是我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/MySlidingDrawer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="test only"
        android:textSize="20dp" />

    <com.mytest.view.SlidingDrawer
        android:id="@+id/SlidingDrawer"
        android:layout_width="wrap_content"
        android:layout_height="250dip"
        android:layout_alignParentBottom="true"
        android:content="@+id/contentLayout"
        android:handle="@+id/slideButton"
        android:orientation="vertical"
        android:topOffset="100.5dp"
        android:padding="10dip" >

        <Button
            android:id="@id/slideButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="UP" >
        </Button>

        <LinearLayout
            android:id="@id/contentLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dip" >

            <Button
                android:id="@+id/Button01"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="2dp"
                android:text="Button01" >
            </Button>
        </LinearLayout>
    </com.mytest.view.SlidingDrawer>

</RelativeLayout>

这是我的属性:

  <declare-styleable name="SlidingDrawer"> 
        <attr name = "orientation"  format="integer"/>
        <attr name = "bottomOffset" format = "dimension"/>
        <attr name = "topOffset" format = "dimension"/>
        <attr name = "allowSingleTap" format = "boolean"/>
        <attr name = "animateOnClick" format = "boolean"/>
        <attr name = "handle" format = "reference"/>
        <attr name = "content" format = "reference"/>
    </declare-styleable>
4

4 回答 4

2

好的,这是一个问题,所以这不是你的问题。

http://code.google.com/p/android/issues/detail?id=3162

我认为这就是 API 级别 17 不推荐使用滑动抽屉的原因。

于 2013-07-22T14:37:01.527 回答
0

检查此链接。我认为您必须声明自己的名称空间才能引用处理程序 http://chrisharrington1.wordpress.com/2012/02/06/android-modifying-the-slidingdrawer-widget-to-use-a-max-height/

于 2013-08-14T07:37:15.053 回答
0

编辑:

在您的按钮上,尝试更改android:id="@id/slideButton"android:id="@+id/slideButton"

充当滑动抽屉句柄的视图需要具有 android:id="@id/handle" 才能使 SlidingDrawer 工作

于 2013-05-17T19:53:01.140 回答
0

您的问题是您将该类作为自定义视图导入,但您仍在使用:

android:content="@+id/contentLayout"
android:handle="@+id/slideButton"

改用这个:

app:content="@+id/contentLayout"
app:handle="@+id/slideButton"
于 2017-10-19T20:57:14.510 回答