android如何将两个滑动抽屉手柄放在一起

时间:2011-08-04 14:04:46

标签: android slidingdrawer

(由我自己解决)
需要一些关于如何做到这一点的建议 澄清我添加了两张图片,显示了左侧的两个slideDrawers 它们默认重叠,所以我将一个图像更改为android-icon以更好地查看问题。

供参考
Im Using this Drawer custom widget created by Alessandro Crugnola
对于我在图像左侧看到的两个抽屉。

我知道默认情况下处理程序是以位置为中心的,需要建议 如何将它们垂直放在一起。 如图所示,他们必须占据屏幕。

我测试了layout_weight =“1”并将它们放在LinearLayout中 但这给了我一个半尺寸的抽屉。我非常了解默认值 slidedrawer不能这样做,所以问题是什么样的黑客会这样做。

有办法做到这一点吗?

pic1

pic2

(如果两张图片重叠,可以看到更新,详见下文讨论)

enter image description here enter image description here 我的XML:          

    <Gallery xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/imageEditGallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:spacing="2px"
        android:gravity="top"
        android:paddingTop="20dip"
    />
    <RelativeLayout
        android:id="@+id/InnerRelativeLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <EditText
            android:id="@+id/etx_addtext_drawtext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:text="Enter text here"
        />

    </RelativeLayout>

    <com.bulk.sprise.editimage.SlidingDrawerLeftFriends
        xmlns:my="http://schemas.android.com/apk/res/com.bulk.sprise"
        android:id="@+id/sliding_drawer_left_friends"
        my:direction="leftToRight"
        android:layout_width="280dip"
        android:layout_height="wrap_content"
        my:handle="@+id/handleLeftFriends"
        my:content="@+id/content"

        >
        <include
            android:id="@id/content"
        layout="@layout/drawer_left_friends_content_editimage" />
        <ImageView
            android:id="@id/handleLeftFriends"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/drawer_left"
            android:topOffset="10dip"
        />
    </com.bulk.sprise.editimage.SlidingDrawerLeftFriends>

    <com.bulk.sprise.editimage.SlidingDrawerLeftOptions
        xmlns:my="http://schemas.android.com/apk/res/com.bulk.sprise"
        android:id="@+id/sliding_drawer_left_options"
        my:direction="leftToRight"
        android:layout_width="280dip"
        android:layout_height="wrap_content"
        my:handle="@+id/handleLeftOptions"
        my:content="@+id/content"
        >
        <include
            android:id="@id/content"
        layout="@layout/drawer_left_options_content_editimage" />
        <ImageView
            android:id="@id/handleLeftOptions"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:topOffset="40dip"

        />
    </com.bulk.sprise.editimage.SlidingDrawerLeftOptions>



    <LinearLayout android:id="@+id/linearLayout_container_SlidingDrawerRight"
        android:layout_width="110dip"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:visibility="visible"
        >

        <com.bulk.sprise.editimage.WrappingSlidingDrawer android:id="@+id/slidingDrawerRight"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:handle="@+id/slideHandleButtonRight"
            android:content="@+id/contentLayout2"
            android:orientation="horizontal"
            android:background="@null">

            <ImageButton android:id="@+id/slideHandleButtonRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/drawer_right"
                android:onClick="btnSlidingDrawerHandler">
            </ImageButton>

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/contentLayout2"
                android:orientation="vertical"
                android:background="@null"

                >

                <ImageButton android:id="@+id/btn_A"
                    android:layout_height="60dip"
                    android:layout_width="60dip"
                    android:text="Button_A"
                    android:background="@android:color/transparent"
                    android:src="@drawable/plus_ball"
                    android:onClick="btnAListener"
                    android:gravity="right"
                    android:scaleType="fitXY">
                </ImageButton>

                <ImageButton android:id="@+id/btn_B"
                    android:layout_height="60dip"
                    android:layout_width="60dip"
                    android:layout_below="@+id/btn_A"
                    android:text="Button_B"
                    android:background="@android:color/transparent"
                    android:src="@drawable/text_ball"
                    android:gravity="right"
                    android:onClick="btnBListener"
                    android:scaleType="fitXY">
                </ImageButton>

                <ImageButton android:id="@+id/btn_C"
                    android:layout_height="60dip"
                    android:layout_width="60dip"
                    android:layout_below="@+id/btn_B"
                    android:text="Button_B"
                    android:background="@android:color/transparent"
                    android:src="@drawable/delete_ball"
                    android:gravity="right"
                    android:onClick="btnCListener"
                    android:scaleType="fitXY">
                </ImageButton>

            </RelativeLayout>
        </com.bulk.sprise.editimage.WrappingSlidingDrawer>
    </LinearLayout>
</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

让我们同时调用滑动抽屉sd1和sd2。解决这个问题的一个想法(未经测试)是为处理程序提供自定义图像,并且有一个滑动抽屉(sd1)可见,而其他(sd2)隐藏(可见性设置为“已消失”)。

然后,在您的视图中,在显示sd1处理程序的边缘处,右边有sd2处理程序图像的图像(按钮或普通图像)。这将使UI看起来有2个滑动式抽屉等待拉出。

现在,当用户拔出sd1时,它根据设计工作。当他点击另一张图片时,会使sd2可见并被拉出。这样你就可以有两个滑动抽屉。

这种方法的潜在复杂性是: 1.未经测试 2.您可能需要一个自定义视图才能将sd2处理程序映像紧跟在sd1处理程序旁边。 3.在具有不同屏幕尺寸的不同设备上处理此方法可能会非常棘手。

答案 1 :(得分:0)

管理让自己工作。
这是经过测试并适用于任何需要它的人 没有在不同屏幕尺寸上测试它。

创建两个处理程序图像 对于hdpi,一个是58x400,另一个是58x132 在较大的一个地方,图形在下部,所以顶部是透明的 另一个图像处理程序必须看起来像普通的处理程序

只需在xml中安排你的两个slidingDawer即可 首先是较大的图像(slidingDrawer)。

你还需要在较小的处理程序上执行bringToFront() 如果gui更改将它放在更大的处理程序

之后

就是这样

答案 2 :(得分:0)

哦,我们再次提出另一种可能的解决方案

如果我在LinearLayout中有两个slidingDrawer并将它们定位为什么怎么办? 使用layout_weight="1"layout_hight="0dip"

这将迫使他们连高度,我有两个抽屉 在左侧垂直均匀分布。
他们当然不会有充分的高度,但我不想使用它们 所以他们都有空的dummy_layout.xml。

我想要使用的是处理器图像的良好和均匀定位。

现在,我接受上面的xml代码并将其放入并制作 处理程序图像view.gone。某事....

现在左边的sida有四个抽拉器。两个看不见,两个看得见 现在我有两个抽屉处理器和它们的机制 将适用于所有设备。

我看到的是两个抽屉吧 如果我拉它们必须有一些方法将拉动重定向到我的 所需的全高抽屉隐藏在后面。

我认为可以设置假抽屉看不见但是像往常一样拉出汉德尔 通过这样做触发下面真实的drawer.open()

也许即时通讯,如果我错了,请纠正我。

你正在关注..