Estoy intentando crear un SlidingDrawer con contenido LinearLayout en un FrameLayout.Android: SlidingDrawer desaparece de SurfaceView
Al principio todo parece estar bien, obtengo el mango de mi deslizador deslizable en la parte inferior de la pantalla. Pero luego, si empiezo a arrastrar el controlador hacia arriba y el contenido comienza a mostrarse, queda recortado por el rectángulo de borde del controlador. Si arrastro el controlador hasta el final, finalmente se muestra todo el contenido; sin embargo, si ahora arrastro el controlador hacia abajo, quedará recortado por el borde del rectángulo del contenido. Además, si el asa está completamente hacia arriba, tan pronto como empiezo a arrastrarlo, todo el contenido desaparece.
Todavía puedo hacer clic en el lugar donde debería estar el identificador en la pantalla, arrástrelo y se mostrará el contenido, pero debo adivinar dónde está el identificador.
Lo que parece estar causando esto es el hecho de que tengo SurfaceView en el archivo xml justo antes de SlidingDrawer.
Eliminar la vista del xml resuelve este problema, sin embargo, necesito esta vista.
Aquí está el xml:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Removing this DrawView from here solves the problem -->
<com.package.DrawView
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<SlidingDrawer
android:id="@+id/SlidingDrawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:allowSingleTap="true"
android:animateOnClick="true"
android:handle="@+id/slideHandleButton"
android:content="@+id/contentLayout"
android:padding="10dip">
<Button
android:id="@+id/slideHandleButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/sliding_button">
</Button>
<LinearLayout
android:id="@+id/contentLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/clearButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test">
</Button>
</LinearLayout>
</SlidingDrawer>
</FrameLayout>
Java:
package com.package;
import android.app.Activity;
import android.os.Bundle;
public class SlideTest extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
package com.package;
import android.content.Context;
import android.util.AttributeSet;
import android.view.SurfaceView;
public class DrawView extends SurfaceView
{
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
Editar: Acabo de notar que si se extiende DrawView Vista y no SurfaceView este problema desaparece. Sin embargo, estoy usando un hilo de dibujo dedicado y de acuerdo con la documentación (y el ejemplo de LunarLander) cuando uso un hilo de dibujo dedicado, debe dibujar en un SurfaceView.
¡Cualquier ayuda sería muy apreciada!
¡Saludos, eso funcionó! – ykrasik
Algunas aclaraciones: Establezca este atributo xml en el elemento SlidingDrawer. – SilithCrowe
No creo que esto realmente resuelva el problema. La región donde el cajón * hubiera estado *, se oscurecerá y el 'SurfaceView' no será visible en esa región, incluso cuando el cajón esté cerrado. Todavía tengo el problema de que el fondo esté recortado por la ubicación que ocuparía el mango si el cajón estuviera abierto. –