Android – widget de acordeón

Estoy buscando la mejor manera de crear un widget de estilo Accordion como en esta página . ¿Hay alguna manera de lograr el mismo efecto utilizando el kit de herramientas estándar de Android o necesito crear un widget personalizado? Si es así, ¿cuál recomendaría extender si hubiera?

He empujado el proyecto de vista de acordeón android en github. Lo usamos para nuestros clientes, probado en 2.2, 2.3.x, 3.2 y 4.0.3. Funciona bastante bien para nosotros.

Voy a agregar animación al plegar / desplegar en el siguiente paso.

Aquí hay una pequeña captura de pantalla:

enter image description here

Y en caso de que todavía se pregunte, esto se puede hacer prácticamente con un par de botones / diseño astackdos dentro del diseño lineal. El pseudo código sigue

                 

Otra cosa que posiblemente intentar es astackr ExpandableListView-s uno encima del otro

Tengo que arriesgarme y decir que la respuesta @Bostone es la más adecuada. Le daré mi código a continuación para que pueda ver. Gracias por el GitHub Maciej Łopaciński, pero como @SudoPlz dijo en los comentarios, no hay documentación en absoluto. No sabía por dónde empezar. Intento hacerlo con Eclipse y Android Studio y en ninguno de los dos podía ejecutar el proyecto para comenzar a descubrir cómo funcionaba. Además, el último compromiso en ese proyecto fue hace aproximadamente 1 año, lo que me hace temer mucho que si algo sale mal, me quede atascado en un callejón sin salida. Entonces, sin más demora, aquí está mi solución basada en @Bostone:

1.- Primero debes crear un Botón y un Diseño nesteds en un ScrollView:

       

2.- Después de eso ve a tu JAVA correspondiente, allí encontrarás el botón y configura un onClickListener, dentro del onClickListener encontrarás el diseño.

 Button findMagicBtn = (Button) findViewById(R.id.magic_btn); findMagicBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 

3.- Ahora, dentro de OnClickListener, encontraremos el diseño. Como puede ver en el primer paso, el diseño está configurado por defecto en GONE , pero ahora tenemos que establecerlo en visible. El problema es, ¿cómo puedo hacer que desaparezca nuevamente y viceversa? Así que agregaremos una condición para obtener la visibilidad del diseño y en base a eso estará oculto o aparecerá:

 Button findMagicBtn = (Button) findViewById(R.id.magic_btn); findMagicBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LinearLayout findMagicLl = (LinearLayout) findViewById(R.id.magic_layout); if (findMagicLl.getVisibility() == View.VISIBLE) { findMagicLl.setVisibility(View.GONE); } else { findMagicLl.setVisibility(View.VISIBLE); } } }); 

Esto se puede poner uno encima del otro tantas veces como desee.

Entonces, si realmente quieres que parezca un acordeón, puedes utilizar el botón. Puedes poner una flecha a la derecha de ella, usando por ejemplo:

 findMagicBtn.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.right_arrow, 0); 

Debería hacer eso dentro de onClickListener y usar la condición para cambiar la dirección de la flecha, cambiando la flecha dibujable (si está ida y abajo, y si es visible una flecha hacia arriba).

Además, puede hacer que parezca más natural agregando una animación, como esta:

 ScaleAnimation animation = new ScaleAnimation(1f, 1f, 1f, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f); animation.setDuration(180); animation.setFillAfter(true); findMagicLl.startAnimation(animation); 

Deberá considerar que la animación anterior debe hacerse mientras la vista está visible. Tenga en cuenta que setFillAfter(true) cambiará el tamaño del contenedor permanentemente, por lo tanto, si lo hace, quizás ya no quiera usar VIEW.GONE . Esta pregunta tiene una maravillosa explicación sobre la animación de escala

En mi aplicación, utilicé la vista de acordeón de Riya Gayasen. Fue muy fácil comenzar y funcionó bien. Aquí esta lo que hice.

  1. Descarga el código fuente del código fuente desde https://github.com/riyagayasen/Android_accordion_view .
  2. Descomprime y copia la carpeta ‘easyaccordion’ en el directorio raíz de tu proyecto (el directorio que contiene la carpeta ‘app’)
  3. En su proyecto root settings.gradle file add: easyaccordion. Así es como se ve mi archivo: include ':app',':easyaccordion'
  4. En su archivo app / build.gradle, agregue la siguiente línea al bloque de dependencias. implementation 'com.riyagayasen.android:easyaccordion:1.0.3'
  5. Y eso es. Puede comenzar a usar el componente dentro de su diseño.
Intereting Posts