隐藏滑动抽屉手柄

时间:2011-12-01 10:14:34

标签: java android android-layout android-widget slidingdrawer

我正在使用滑动抽屉小部件在我的Android应用程序中构建视图。我已经实现了自己的自定义句柄(只有一行菜单按钮,然后更改抽屉的内容,然后激活openAmination)。我设法禁用了slidedrawer提供的标准句柄,但我想完全删除它。

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);

然后我尝试扩展slidingDrawer类并制作我自己的类但它仍然需要一个句柄!无论如何我有一个没有默认手柄的滑动抽屉吗?

----- ----解

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 个答案:

答案 0 :(得分:2)

我试了好几个小时但没能摆脱手柄,我能做的最好把它远离视窗移动。如果你已经扩展了slidedrawer类,那应该很容易。

在onLayout方法中找到行

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

并将其更改为

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

基本上它只是将其位置设置为屏幕。

答案 1 :(得分:2)

我找到了解决问题的更好方法。

不要隐藏手柄本身,但这是内容。我有一个ImageView作为句柄,但我把它改为一个持有ImageView的LinearLayout。

<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 :(得分:1)

我有同样的问题,我不想显示句柄,因为我有一个个人按钮,在点击时显示SlidingDrawer。所以,我解决了它将把手高度设置为0dp。 这是我的句柄代码:

        <ImageButton
            android:id="@+id/cash_menuGruop_handle"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_contetn"
            android:layout_height="0dp"/>

答案 3 :(得分:0)

  <Button 
        android:layout_width="0dp" 
        android:layout_height="0dp" 
        android:id="@+id/handle"
        android:visibility="gone" //DOES NOT WORK
        </Button>
  1. 使用高度和宽度0dp ,用于打开和关闭使用handle.performclick(); 这对我有用