Sto provando a creare uno SlidingDrawer con contenuto LinearLayout su FrameLayout.Android: SlidingDrawer scompare in SurfaceView
All'inizio sembra tutto a posto, prendo la maniglia del mio SlidingDrawer nella parte inferiore dello schermo. Ma poi, se inizio a trascinare la maniglia e il contenuto inizia a mostrare, viene ritagliato dal rettangolo del bordo dell'impugnatura. Se trascino la maniglia fino all'intero contenuto, alla fine viene visualizzato, tuttavia se ora trascino la maniglia verso il basso, verrà ritagliata dal rettangolo del bordo del contenuto. Inoltre, se la maniglia è completamente sollevata, non appena inizio a trascinarla, l'intero contenuto scompare.
Posso ancora fare clic su dove dovrebbe essere visualizzata la maniglia sullo schermo, trascinarla e il contenuto verrà visualizzato, ma devo indovinare dove si trova l'handle.
Ciò che sembra causare questo è il fatto che ho un SurfaceView nel file xml appena prima di SlidingDrawer.
Rimuovere la vista dall'xml risolve questo problema, tuttavia ho bisogno di questa vista.
Ecco il 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);
}
}
Edit: Ho appena notato che se DrawView estende Vista e non SurfaceView questo problema va via. Tuttavia, sto utilizzando un thread di disegno dedicato e, in base alla documentazione (e all'esempio di LunarLander) quando si utilizza un thread di disegno dedicato, è necessario disegnare su SurfaceView.
Qualsiasi aiuto sarebbe molto apprezzato!
Cheers, ha funzionato! – ykrasik
Alcuni chiarimenti: imposta questo attributo xml sull'elemento SlidingDrawer. – SilithCrowe
Non penso che questo risolva il problema. La regione in cui il cassetto * sarebbe stato *, diventa oscurata e 'SurfaceView' non è visibile in quella regione anche quando il cassetto è chiuso. Sto ancora avendo il problema in cui lo sfondo è troncato dalla posizione che la maniglia avrebbe occupato se il cassetto fosse aperto. –