Скрытие выдвижной ручки ящика - PullRequest
0 голосов
/ 01 декабря 2011

Я создаю представление в моем приложении Android с помощью виджета с выдвижным ящиком.Я реализовал свои собственные дескрипторы (просто ряд кнопок меню, которые затем изменяют содержимое ящика и затем активируют openAmination).Мне удалось отключить стандартный дескриптор, поставляемый с выдвижным лотком, но я хочу полностью удалить его.

Ни один из стандартных элементов видимости в xml или java не помогает скрыть / удалить дескриптор:

    <SlidingDrawer android:layout_width="fill_parent" 
        android:id="@+id/slidingDrawer1" 
        android:layout_height="fill_parent" 
        android:handle="@+id/handle" 
        android:content="@+id/content" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentLeft="true"
        android:allowSingleTap="false"

        >

            <Button android:layout_width="wrap_content" 
            android:text="Close" 
            android:layout_height="wrap_content" 
            android:id="@+id/handle"
            android:visibility="gone" //DOES NOT WORK
            </Button>

            <LinearLayout android:id="@+id/content" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:background="#FFFFFF">
            </LinearLayout>
        </SlidingDrawer>

Я также пытался импортировать представление в java и делать то же самое, но также не работает.

View h = findViewById(R.id.handle);
h.setVisibility(View.GONE);

Затем я попытался расширить класс slideDrawer и создать свой собственный, но он все еще требует дескриптора !.Есть ли в любом случае у меня выдвижной ящик без ручки по умолчанию?

----- РЕШЕНИЕ ----

draw = (SlidingDrawer)findViewById(R.id.slidingDrawer1);


    //Close the draw if opened when the user touches elsewhere on the screen
    draw.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(draw.isOpened())
            ((SlidingDrawer)v).animateOpen();
            return false;
        }});

//Open the draw by external button
     ((Button) findViewById(R.id.quiz_button)).setOnClickListener(
             new Button.OnClickListener(){
                    @Override
                    public void onClick(View arg0) {
                        draw.animateOpen();
                    } });

XML для вида раздвижного рисования был:

    <SlidingDrawer android:layout_width="fill_parent" android:allowSingleTap="false" android:id="@+id/slidingDrawer1" android:content="@+id/content" android:handle="@+id/handle" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_alignParentLeft="true">
            <Button android:layout_height="wrap_content" android:layout_width="0px" android:visibility="invisible" android:text="Close" android:id="@+id/handle"></Button>
            <LinearLayout android:id="@+id/content" android:gravity="center" android:background="#4FFFFF44" android:layout_width="fill_parent" android:layout_height="76dp"></LinearLayout>
        </SlidingDrawer>

Большое спасибо Сэм

Ответы [ 4 ]

2 голосов
/ 10 сентября 2012

Я нашел лучший способ решить проблему.

Не прячьте сам дескриптор, но его содержимое. У меня был дескриптор ImageView, но я изменил его на LinearLayout, содержащий ImageView.

<LinearLayout
    android:id="@id/handle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/handleImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/sliding_drawer_handle" />
</LinearLayout>

Теперь handleImage.setVisibility (View.INVISIBLE) отлично работает в onAnimationEnd.

Надеюсь, что помогло:)

2 голосов
/ 01 декабря 2011

Я пытался много часов и не смог избавиться от ручки, лучшее, что я мог сделать, это отодвинуть ее подальше от окна обзора. Если вы уже расширили класс скольжения, это должно быть просто.

В методе onLayout найдите строку

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

и измените его на

handle.layout(10000, 10000, 10000, 10000);

По сути, это просто установка положения экрана.

1 голос
/ 29 августа 2013

У меня та же проблема, я не хочу показывать дескриптор, потому что у меня есть личная кнопка, которая показывает SlidingDrawer при нажатии. Итак, я решил это, установив высоту ручки в 0dp. Это код моей ручки:

        <ImageButton
            android:id="@+id/cash_menuGruop_handle"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_contetn"
            android:layout_height="0dp"/>
0 голосов
/ 18 мая 2017
  <Button 
        android:layout_width="0dp" 
        android:layout_height="0dp" 
        android:id="@+id/handle"
        android:visibility="gone" //DOES NOT WORK
        </Button>
  1. используйте высоту и ширину 0dp, для открытия и закрытия используйте handle.performclick ();у меня это работает
...