I have both a SlidingDrawer and a custom SurfaceView that renders an image. I have just tried to drag the SlidingDrawer up and in doing so have discovered that it goes behind the image in the SurfaceView and is completely hidden.
As you can imagine this won't be much use to the user and therefore need the image to always fall behind the SlidingDrawer when it is pulled up. Is this possible?
Incase it helps this is the SlidingDrawer in the xml:
<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>
And this is the SurfaceView in xml:
<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>
The SurfaceView is custom and uses the following code in the onDraw() method:
@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);
}
After much scanning around I have found the (simple) answer to my problem from the following Stack Overflow page: Android: SlidingDrawer disappears under SurfaceView. Quite simply in the SlidingDrawer xml element add:
android:background="#00000000";
Edit
Having reverted back to the my original code after implimenting the background it stopped working again. In the end I found where the other issue I had was that stopped the above solution from working. For everyone else’s benefit, ensure you don't set the SurfaceView z-index to the top via:
sv.setZOrderOnTop(true);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With