我既有一个SlidingDrawer,也有一个自定义的SurfaceView来渲染图像。我刚刚尝试将SlidingDrawer向上拖动,并发现它位于SurfaceView中的图像后面并被完全隐藏。

可以想象,这对用户来说并没有太大用处,因此需要图像在上拉时始终落在SlidingDrawer后面。这可能吗?

如果它有帮助,这是xml中的SlidingDrawer:

<SlidingDrawer
             android:id="@+id/drawer"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:handle="@+id/handle"
             android:content="@+id/content"
             android:layout_alignParentBottom="true">

             <TextView
                 android:id="@id/handle"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center"
                 android:paddingTop="5dip"
                 android:paddingBottom="5dip"
                 android:textStyle="bold"
                 android:text="text"/>


            <include layout="@layout/content"
                 android:id="@id/content"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"/>

         </SlidingDrawer>

这是xml中的SurfaceView:
<FrameLayout android:id="@+id/FrameLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <com.android.imagemagic.widgets.ImageManipulationSurfaceView
        android:id="@+id/surfaceArea"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_gravity="center"/>
    </FrameLayout>

SurfaceView是自定义的,并在onDraw()方法中使用以下代码:
@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //Clear canvas
    Paint paint = new Paint();
    paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
    canvas.drawPaint(paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC));

    // Draw image
    canvas.drawBitmap(image, imageX, imageY, null);
}

最佳答案

经过大量扫描之后,我从以下“堆栈溢出”页面中找到了针对我的问题的(简单)答案:Android: SlidingDrawer disappears under SurfaceView。只需在SlidingDrawer xml元素中添加:

android:background="#00000000";

编辑

在隐含了背景之后恢复了我的原始代码后,它再次停止工作。最后,我发现我遇到的另一个问题是使上述解决方案无法正常工作。为了他人的利益,请确保不要通过以下方式将SurfaceView z-index设置为顶部:
sv.setZOrderOnTop(true);

10-07 19:40