SlidingDrawer имеет макет для обработки невидимого и вертикального центра - PullRequest
0 голосов
/ 08 декабря 2011

Я использую SlidingDrawer из Справа налево , он работает хорошо, но у меня проблема с невидимой частью android: handle, который является LinearLayout.Мне пришлось использовать LinearLayout со свойством fill_parent, чтобы разрешить поместить мою кнопку в верхнюю часть представления .Если я наложу свой дескриптор на свой ImageView, он станет вертикально по центру в середине , и я не хочу этого.

Вот мой код:

<SlidingDrawer
            android:id="@+id/SlidingDrawer"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:content="@+id/contentLayout"
            android:handle="@+id/slideHandleButton"
            android:orientation="horizontal"
            android:padding="0dp" >

            <LinearLayout

                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/slideHandleButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/profile_top_panel_background" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/contentLayout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/slideHandleButton"
                android:background="@drawable/profile_slider_attributes_background"
                android:orientation="vertical"
                android:padding="10dip" >

                <ScrollView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:fillViewport="true" >

                    <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:orientation="vertical" >

            //DISPLAY CONTENT

                    </LinearLayout>
                </ScrollView>
            </LinearLayout>
        </SlidingDrawer>

1 Ответ

1 голос
/ 08 декабря 2011

Единственный способ, которым я нашел, чтобы переместить ручку именно туда, куда я хотел, это расширить класс slidedrawer и изменить метод onLayout.

Эта строка в исходном коде sldingdrawer определяет положение дескриптора.

handle.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);

Раздвиньте ползунок и попробуйте отрегулировать значения, пока не получите нужную позицию.

...