如何通过XML设置SlidingDrawer的高度?

时间:2012-01-25 09:29:53

标签: android android-layout

我正在尝试使用具有从下到上结构的SlidingDrawer ..我在滑动抽屉的内容中放置了4个微调器。当我执行时,手柄(我有一个图像)显示在上面屏幕。我想把这个句柄放在内容之上(即在4个微调器之上......)

这是我的xml布局......

main.xml中

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <SlidingDrawer
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/drawer"
        android:handle="@+id/MyHandle"
        android:content="@+id/MyContent">
            <LinearLayout 
                android:id="@+id/MyHandle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="bottom"
                android:orientation="vertical">
                <ImageView 
                    android:id="@+id/SlideIcon"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/images"/>
            </LinearLayout>
            <FrameLayout 
                android:id="@+id/MyContent"
                android:layout_width="fill_parent"
                android:layout_height="200dip"
                android:orientation="vertical">
                <include
                    android:id="@+id/DrawerContent"
                    layout="@layout/spinnerlayout" 
                    android:layout_height="wrap_content"/>
            </FrameLayout>
    </SlidingDrawer>
</FrameLayout>

和spinnerlayout.xml ..

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:foregroundGravity="bottom"
    android:layout_gravity="bottom"
    android:background="@color/grey">

    <LinearLayout 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="vertical">
        <Spinner 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinner_first"/>
        <Spinner 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinner_second"/>
        <Spinner 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinner_third"/>
        <Spinner 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinner_fourth"/>
    </LinearLayout>
</FrameLayout>

为了让我的问题更清晰,我有截图..

before handle is clicked

after handle is clicked

我希望在旋转器上方有这个句柄(箭头)..

是否可以放置它?

1 个答案:

答案 0 :(得分:3)

SlidingDrawer类的onMeasure()方法基本上覆盖了fill_parent的布局模式,这就是layout_height =“wrap_content”不起作用的原因。

为了解决这个问题,您可以使用重新实现的onMeasure()方法扩展SlidingDrawer,该方法遵循layout_width和layout_height属性。然后,您可以通过替换。

在XML布局中使用此自定义类

请注意,由于抽屉将不再填充父版面,因此您必须将其包含在LinearLayout中,并将gravity属性设置为抽屉所在的边缘。

答案
your Question