2011-11-15 13 views
5

Estoy tratando de iniciar una aplicación y estoy perdido en cómo hacer lo que quiero.Android paneles deslizantes

Esto es lo que quiero

left and right red sliders ; main white content

Ambos paneles rojos deben ser capaces de deslizarse hacia los lados y el blanco deben ampliar si uno de ellos (o ambos) que se colapsa, ocupando ese panel espacio. Cuando tengo los paneles rojos en la pantalla, el panel blanco muestra todo el contenido y no se encuentra debajo de ninguno de los paneles.

Lo he intentado hasta ahora: Empecé probando con dos SlidingDrawer s, pero el panel blanco quedó detrás de los rojos, por lo tanto, no tuve suerte. Después de eso probé con 2 LinearLayouts (paneles rojos) y un RelativeLayout (panel blanco), y traté de cambiar el ancho de los diseños con botones (como en la imagen de la parte superior). Esto causaba siempre problemas que no sabía cómo resolver.

Sugerencias?

Editar: XML del ejemplo SlidingDrawer:

<LinearLayout 
android:id="@+id/LinearLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:gravity="bottom" 
android:background="#FFFFFFFF"> 
<SlidingDrawer 
    android:layout_width="100dip" 
    android:id="@+id/SlidingDrawer" 
    android:handle="@+id/slideHandleButton" 
    android:content="@+id/contentLayout" 

    android:layout_height="fill_parent" 
    android:orientation="horizontal"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:id="@+id/contentLayout" 
     android:orientation="horizontal" 

     android:background="#C0C0C0" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="Meio" 
      android:layout_toRightOf="@+id/buttonEsq" /> 
    </LinearLayout> 
    <Button 
     android:layout_width="30dip" 
     android:layout_height="30dip" 
     android:id="@+id/slideHandleButton" 
     android:background="@drawable/arrowup">   
    </Button> 
</SlidingDrawer> 
</LinearLayout> 

Y el xml del ejemplo LinearLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

    <RelativeLayout 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent"     
    android:orientation="horizontal" 
    android:layout_toLeftOf="@+id/linearLayout3" 
    android:layout_toRightOf="@+id/linearLayout1" 
    android:background="#FFFFFFFF"> 
    <Button 
     android:id="@+id/buttonEsq" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 


     android:text="v--" /> 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Meio" 
     android:layout_toRightOf="@+id/buttonEsq" /> 

    <Button 
     android:id="@+id/buttonDir" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_toRightOf="@+id/textView1" 
     android:text="--v" /> 
</RelativeLayout> 
<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="50dip" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 


    android:background="#FFFF0000"> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Esquerda" /> 
</LinearLayout> 



<LinearLayout 
    android:id="@+id/linearLayout3" 
    android:layout_width="50dip" 
    android:layout_height="fill_parent" 
    android:layout_alignParentRight="true" 



    android:background="#FFF00000"> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Direita" /> 
</LinearLayout> 

</RelativeLayout> 

El código de Android (la parte comentado es el código de la primera ejemplo) :

public class Main extends Activity { 
Button slideHandleButton; 
Button slideHandleButtonLeft; 
Button slideHandleButtonRight; 
SlidingDrawer slidingDrawer; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.mainlayouts); 
/* slideHandleButton = (Button) findViewById(R.id.slideHandleButton); 
    slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer); 

    slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() { 
     @Override 
     public void onDrawerOpened() { 
      slideHandleButton.setBackgroundResource(R.drawable.arrowdown); 
     } 
    }); 

    slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() { 
     @Override 
     public void onDrawerClosed() { 
      slideHandleButton.setBackgroundResource(R.drawable.arrowup); 
     } 
    });*/ 
    slideHandleButtonLeft = (Button) findViewById(R.id.buttonEsq); 
    slideHandleButtonLeft.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      LinearLayout lll = (LinearLayout) findViewById(R.id.linearLayout1); 
      RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(50, LinearLayout.LayoutParams.FILL_PARENT);    
      lll.setLayoutParams(params);    
     } 
    }); 
} 
} 
+0

Publicaba un código de lo que se aproxima, eso no funcionó. Eso podría darles algo a los demás cuando sugiera un enfoque para usted – hooked82

+0

Hecho, espero que ayude :) – Dporem

+0

[Pruebe esto] (http://androidtrainningcenter.blogspot.in/2013/06/slidingpanelayout-android-making.html) – Sameer

Respuesta

1

SlidingDrawer sólo puede deslizarse desde la derecha o la Bott om, no puede deslizarse desde la parte superior o izquierda. Puede intentar la respuesta a esta pregunta: Android SlidingDrawer from top? o puede intentar volver a escribir el código fuente http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/SlidingDrawer.java.

Sin embargo, un SlidingDrawer no permitirá

el panel blanco mostrar todo el contenido y no estar bajo cualquiera de los paneles

como que pueda deslizarse sobre el panel blanco

El La única solución que se me ocurre es usar una serie de escala/traducir, trasladar el panel izquierdo o derecho fuera de la pantalla y configurar la visibilidad como desaparecida, mientras que al mismo tiempo escalar el panel central en la dirección del panel rojo que se esté Remover ed.

Intenté hacer un prototipo similar hace algún tiempo y utilicé este método pero las animaciones de escala parecían terribles, sin mencionar que el oyente OnAnimationEnd no funciona, tendrás que extender LinearLayout y anular en AnimationEnd allí para ello trabajar.

+0

Verifique la primera oración, a la izquierda se menciona dos veces. Probablemente quieras decir en cierto punto. –

+0

ah ooops, fijo – triggs

+0

"La única solución que puedo pensar es usar una serie de escala/traducir, trasladar el panel izquierdo o derecho fuera de la pantalla y configurar la visibilidad como desaparecida, mientras que al mismo tiempo escalar el panel central en la dirección del panel rojo que se está eliminando ". Probé esto y no funcionó bien ... De todos modos, voy a proponer un enfoque diferente para mi jefe, solo espero que le guste o estoy en un mundo de dolor jajaja. De todos modos, gracias por tu ayuda, este parece un tema difícil de responder :) – Dporem

Cuestiones relacionadas