用于按钮的 Android 滑动抽屉

Posted

技术标签:

【中文标题】用于按钮的 Android 滑动抽屉【英文标题】:Android sliding Drawer for a button 【发布时间】:2012-11-17 08:15:22 【问题描述】:

我在屏幕底部有一个布局,它有五个水平按钮,其中一个是“更多按钮”。

单击“更多按钮”时,我想打开一个带有三个按钮或文本视图的滑动抽屉:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/global_bg" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" >

    <ImageView
        android:id="@+id/imageView4"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/navicon_search" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_video" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView6"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_news" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView7"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_ecommerce" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imgMore"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_more" />
</LinearLayout>

<ImageView
    android:id="@+id/ImageView01"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@null"
    android:scaleType="fitXY"
    android:src="@drawable/top_color_bar" />

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/ImageView01"
    android:background="@drawable/global_masthead" >

    <ImageView
        android:id="@+id/imgbtnBackFromResetAddTime"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/topnav_backarrow_small" />

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Add Time"
        android:textSize="20dp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/imgListOpen"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/imageView1"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/topnav_geomap_small" />
</RelativeLayout>

点击“imgMore”后,滑动抽屉应打开,带有 3 个按钮。

请修改我的布局以适应更改。

我试过这个......

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/global_bg" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" >

    <ImageView
        android:id="@+id/imageView4"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/navicon_search" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_video" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView6"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_news" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <ImageView
        android:id="@+id/imageView7"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_icon_ecommerce" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:src="@drawable/nav_divider" />

    <SlidingDrawer
        android:id="@+id/SlidingDrawer"
        android:layout_
        android:layout_
        android:content="@+id/contentLayout"
        android:handle="@+id/imgMore"
        android:orientation="horizontal"
        android:padding="10dip" >

        <ImageView
            android:id="@+id/imgMore"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:src="@drawable/nav_icon_more" />

        <LinearLayout
            android:id="@+id/contentLayout"
            android:layout_
            android:layout_
            android:background="#cccccc"
            android:gravity="center"
            android:orientation="vertical"
            android:padding="10dip" >

            <Button
                android:id="@+id/Button01"
                android:layout_
                android:layout_
                android:layout_margin="2dp"
                android:text="Option1" >
            </Button>

            <Button
                android:id="@+id/Button02"
                android:layout_
                android:layout_
                android:layout_margin="2dp"
                android:text="Option2" >
            </Button>

            <Button
                android:id="@+id/Button03"
                android:layout_
                android:layout_
                android:layout_margin="2dp"
                android:text="Option3" >
            </Button>

            <Button>
            </Button>
        </LinearLayout>
    </SlidingDrawer>
</LinearLayout>

<ImageView
    android:id="@+id/ImageView01"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@null"
    android:scaleType="fitXY"
    android:src="@drawable/top_color_bar" />

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/ImageView01"
    android:background="@drawable/global_masthead" >

    <ImageView
        android:id="@+id/imgbtnBackFromResetAddTime"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/topnav_backarrow_small" />

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Add Time"
        android:textSize="20dp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/imgListOpen"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/imageView1"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/topnav_geomap_small" />
</RelativeLayout>

【问题讨论】:

【参考方案1】:

请参阅this 示例将对您有所帮助。在此示例中,仅在您想添加取决于您的文本时才向您显示一个按钮,无论它是静态的还是动态的。

这只是为了指导你。

【讨论】:

这并没有达到我的目的......我希望线性对齐的其他按钮也可以滑动和隐藏,以便只有更多按钮与抽屉一起可见。 它与 facebook 滑动抽屉相同,在按钮单击时会出现一个布局并与早期布局重叠。看视频...youtube.com/watch?v=ANLMaL7zn20 请告诉我这个链接没有一些参考它就像在空中飞行 那么那个链接有什么问题?

以上是关于用于按钮的 Android 滑动抽屉的主要内容,如果未能解决你的问题,请参考以下文章

在Xamarin android中从右向左滑动抽屉

Android如何使用工具栏中的按钮切换以使用片段打开/关闭导航抽屉

Android - 使滑动抽屉从左向右滑动

Android:3 级滑动抽屉

android - 通过单击应用程序图标打开导航抽屉?

如何实现一个滑动整个活动内容的 Android 导航抽屉?