0

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

作为参考
,我正在使用由 Alessandro Crugnola
为我在图像左侧看到的两个抽屉创建的这个抽屉自定义小部件。

我知道默认情况下处理程序是位置居中的,需要关于如何将它们垂直放置在一起的建议。他们必须占用孔屏作为图片展示。

我已经测试了 layout_weight="1" 并将它们放入 LinearLayout
但这给了我一个半尺寸的抽屉。我非常了解默认的滑动抽屉无法做到这一点,所以问题是什么样的黑客会做到这一点。

有没有办法做到这一点?

图1

图2

(更新两个图像重叠时的外观,详见下文讨论)

在此处输入图像描述 在此处输入图像描述 我的 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>
4

3 回答 3

1

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

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

所以现在,当用户拉出 sd1 时,它按设计工作。当他单击另一个图像时,这使 sd2 可见并被拉出。这样您就可以同时拥有两个滑动抽屉。

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

于 2011-08-04T16:51:09.000 回答
0

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

创建两个处理程序图像。
对于 hdpi,一个是 58x400,另一个是 58x132。
在大的地方,将图形放在下部,使顶部是透明的。
另一个图像处理程序必须看起来像一个正常的处理程序。

只需在 xml 中安排你的两个slidingDawer,以便
更大的图像(slidingDrawer)首先出现。

您还需要在较小的处理程序上执行 BringToFront(),
如果 gui 更改将其放在较大的处理程序后面

就是这样

于 2011-08-04T17:17:27.443 回答
0

哦,我们又来了另一个可能的解决方案

如果我在 LinearLayout 中有两个slidingDrawer 并
layout_weight="1"和定位它们怎么办layout_hight="0dip"

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

我想要使​​用的是很好且均匀定位的处理程序图像。

现在,我将我的问题 xml 代码放在上面并将其放入,并使
处理程序图像view.gone.something....

现在在左侧 sida 上有四个滑动抽屉。两个看不见,两个看得见。
现在我有了两个抽屉处理程序的机制,它们可以在所有设备上正常工作。

我看到的是两个抽屉吧。
如果我拉它们,一定有某种方法可以将拉力重定向到
隐藏在后面的我想要的全高抽屉。

我认为可以将虚拟抽屉设置为隐形,但像往常一样拉动把手。
通过这样做drawer.open()在下面的真实触发上触发。

也许我有出路,如果我错了,请纠正我。

你在追吗。。

于 2011-08-04T20:35:00.200 回答