Как установить высоту SlidingDrawer через XML? - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь использовать 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 Ответ

3 голосов
/ 25 января 2012

Метод onMeasure () класса SlidingDrawer в основном заменяет режимы макета на fill_parent, поэтому layout_height = "wrap_content" не работает.

Чтобы обойти это, вы можете расширить SlidingDrawer с помощью повторно реализованного метода onMeasure (), который учитывает атрибуты layout_width и layout_height. Затем вы можете использовать этот пользовательский класс в макете XML, заменив на.

Обратите внимание, что поскольку ящик больше не будет заполнять родительский макет, вам придется заключить его в LinearLayout с атрибутом gravity, установленным на край, где должен быть ящик.

Ответ
ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...