Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Qué es el ButtonBarLayout y cómo debemos usarlo?

Cuando me desarrollé, encontré un nuevo widget llamado android.support.v7.widget.ButtonBarLayout inesperadamente. Intenté buscarlo en Internet, pero no se encontró nada, ni siquiera en el sitio oficial de documentos de desarrollo.

Mientras tanto, encontré dos ButtonBarLayout cuando busco ButtonBarLayout en todas partes en Android Studio , uno es android.support.v7.widget.ButtonBarLayout y el otro es com.android.internal.widget.ButtonBarLayout . Intenté leer los códigos fuente de ambos, encontré que son iguales excepto el nombre del paquete. Así que pensé que tal vez android.support.v7.widget.ButtonBarLayout vino de com.android.internal.widget.ButtonBarLayout después de que el interno ButtonBarLayout fue a través de pruebas y lanzado. Al mismo tiempo, ButtonBarLayout se hereda de LinearLayout .

Pero hay alguna pregunta:

  • ¿Qué podemos obtener de ButtonBarLayout literalmente y cómo debemos usarlo?
  • Me di cuenta de la variable private boolean mAllowStacking . Cuando cambia, la orientación de esta disposición se cambiaría. Pero realmente no entendía para qué se utiliza.

¿Así que alguien conoce bien ButtonBarLayout ?

PS: Utilicé Android Studio de 2.0.0 Preview 4 y Gradle Plugin de 2.0.0-alpha3 y Android Support Library de 23.1.1 y Platform-tools de 23.1 y Build-tools de 23.0.2 .

  • GetSupportActionBar () devuelve null con Robolectric
  • Error "el paquete android.support.v7.app no ​​existe"
  • PreferenceFragmentCompat requiere la preferenciaTheme ser fijado
  • ¿Cómo añadir fuente + javadoc para android-support-v7?
  • Actualizar Android SDK causa bloqueo java.lang.VerifyError
  • No se puede agregar la biblioteca de soporte v7 AppCompat
  • ¿Qué es una Biblioteca de soporte de Android?
  • Nullpointer al utilizar el adaptador personalizado en el menú de la lista de la barra de acciones (con el compat-v7)
  • 6 Solutions collect form web for “¿Qué es el ButtonBarLayout y cómo debemos usarlo?”

    El código fuente describe ButtonBarLayout siguiente manera:

     /** * An extension of LinearLayout that automatically switches to vertical * orientation when it can't fit its child views horizontally. */ 

    Así que, en esencia, no es más que un LinearLayout inteligente que gestiona las orientaciones de conmutación automática basadas en el espacio disponible en la pantalla.

    El mismo archivo ButtonBarLayout.java describe mAllowStacking en los comentarios de la siguiente manera:

     /** Whether the current configuration allows stacking. */ 

    Código fuente aquí

    Como otros señalaron, la descripción de la clase dice exactamente lo que es: an extension of LinearLayout that automatically switches to vertical orientation when it can't fit its child views horizontally.

    Puedo añadir que esto se hizo claramente para ajustarse a las especificaciones de diseño de materiales sobre diálogos. Hacen una distinción entre los botones de lado a lado y los botones apilados . Vea por ejemplo:

    Se recomiendan botones de lado a lado cuando el texto de cada etiqueta no excede el ancho máximo del botón, como los botones de OK / Cancel que se utilizan comúnmente.

    Introduzca aquí la descripción de la imagen

    Mientras que usted debe ir para los botones apilados cuando el solo botón es demasiado grande, o no hay bastante sitio para ambos:

    Cuando las etiquetas de texto exceden el ancho máximo del botón, utilice los botones apilados para acomodar el texto. Las acciones afirmativas se apilan por encima de las acciones desdeñosas.

    Introduzca aquí la descripción de la imagen

    Por lo tanto, un posible uso de esta clase, es cuando diseñar sus propios diálogos. Por ejemplo, AlertDialog y AlertDialog.Builder ofrecen soporte interno para diálogos con botones, pero a veces sólo desea subclasificar DialogFragment o AppCompatDialogFragment para un mejor control.

    Allí, puede ser útil configurar una barra de botones inferior que siga las directrices de diseño y tenga control total sobre los botones (como activar y desactivar, cosas que no se pueden hacer con un AlertDialog AFAIK).

    Tienes razón en primer lugar. ButtonBar diseño de ButtonBar no parece estar presente en ninguna parte de la documentación oficial de Android. Traté de buscarlo, pero no sirvió. Sin embargo he encontrado alguna información que define lo que es un diseño de ButtonBar y cuándo usarlo. Espero que esto te ayude.

    La mayoría de los tutoriales utilizan el diseño de la Buttonbar en un cuadro de diálogo o en la parte inferior de una pantalla para confirmar o rechazar una opción. La imagen de abajo es una representación visual de cómo se ha utilizado el diseño de ButtonBar en una pantalla.

    Introduzca aquí la descripción de la imagen

    La captura de pantalla anterior tiene la siguiente disposición xml:

     <LinearLayout style="?android:attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/Button01" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Show" /> <Button android:id="@+id/Button02" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Change" /> </LinearLayout> <EditText android:id="@+id/myView" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> 

    Así que esencialmente lo que Android está haciendo aquí es simplemente la creación de dos botones al lado del otro en un LinearLayout con cada botón que tiene el parámetro match_parent establecido en el ancho. Por lo tanto, cada botón toma la mitad del tamaño de la pantalla. Android realmente han quitado la molestia de crear botones separados y colocarlos correctamente para adaptarse a diferentes pantallas, mediante la creación de un simple widget de manejo de este conjunto.

    Al igual que con la biblioteca de soporte, Android ha implementado esto para desarrolladores que utilizan una API anterior. Es normal que utilicen la biblioteca de soporte para este propósito.

    Espero que esto ayude 🙂

    https://android.googlesource.com/platform/frameworks/base/+/master/core/java/com/android/internal/widget/ButtonBarLayout.java

    Mirando en el código, creo que es un LinearLayout para los botones (duh). Probablemente se puede ver como los botones de diálogo dividido por un espaciador vertical: | . AllowStacking cambiará la orientación a vertical y la gravedad a la derecha en lugar de a la inferior. Debería probarlo para dar una mejor respuesta

    ButtonBarlayout no aparece en ninguna parte de la documentación oficial de Android. Se utiliza para las orientaciones de auto-conmutación según el espacio.

    Con respecto a su pregunta:
    ¿Cómo debemos usarlo?

    Supongo que es indocumentado porque todavía no es estable.
    Sólo apareció porque esta queja de larga duración se originan de la modificación de la ROM pobres por proveedor de dispositivos.
    https://code.google.com/p/android/issues/detail?id=78377

    Consulte # 270 para la resolución relativa a classpath y por qué todas las clases dentro de .internal. Se hicieron públicos. Y nope incluso que arreglar un montón de errores de modificación ROM pobres todavía están ahí (en un montón de dispositivos de marcas conocidas). El problema es pronto rechazado por el miembro del proyecto.

    No creo que deberíamos usarlo todavía hasta que aparezca el documento.
    Sólo mi $ .02 sin embargo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.