Creo una interfaz de usuario para mi aplicación de Android. Yo uso Android Studio, Java y XML.

Diseñé un componente de botón genérico que se ve así:

enter image description here

Uno debería poder configurar el color del texto, el icono (imagen) y el texto del botón de este botón.

Luego quiero tomar este componente de botón y crear un componente de barra de navegación que consta de dos botones:

enter image description here

Finalmente, quiero tomar el componente de navegación, configurar iconos, colores de texto y textos para botones y usarlo en el diseño de mi actividad para tener una barra de navegación como esta:

enter image description here

¿Me puede mostrar un ejemplo de cómo puedo lograr esto? Tengo cierta experiencia con Qt Quick y crear componentes como este en Qt Quick es muy fácil y directo. Espero que se pueda lograr algo similar también con el xml de Android.

Pasé una hora tratando de crear esto usando incluir etiquetas y enlaces de datos, sin suerte.

1
Martin Dusek 26 feb. 2020 a las 17:29

2 respuestas

La mejor respuesta

Puede crear una "Vista personalizada" que amplíe la clase Button existente o puede crear una "Vista compuesta" que solo agrupa múltiples vistas en un componente reutilizable. Una vista compuesta generalmente extiende una clase de contenedor (como LinearLayout o ConstraintLayout. Luego puede pasarle un diseño XML o crear las vistas requeridas dentro de su vista compuesta.

Para personalizar su nueva vista (compuesta), puede declarar atributos con estilo.

Para comenzar con vistas personalizadas, puede consultar las lecciones 10.1 y 10.2 de los Codelabs para el desarrollo avanzado de Android

Puede encontrar un tutorial y un ejemplo para vistas compuestas aquí.

Tenga en cuenta que, en ambos casos, puede crear un archivo XML en su carpeta de recursos que contenga atributos adicionales para su vista personalizada / compuesta. Esto te permitirá configurar p. iconos personalizados para su vista en XML.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyCustomStyle">
        <attr name="titleText" format="string" localization="suggested" />
        <attr name="valueColor" format="color" />
    </declare-styleable>

</resources>

En el código de su vista personalizada / compuesta, puede leer la información a través del método obtainStyledAttributes en el constructor.

public MyCustomView(Context context, AttributeSet attrs) {
    super(context, attrs);

    TypedArray a = context.obtainStyledAttributes(attrs,
            R.styleable.MyCustomStyle, 0, 0);
    String titleText = a.getString(R.styleable.MyCustomStyle_titleText);
}

(Ejemplo tomado de vogella.com )

1
Alexander Hoffmann 26 feb. 2020 a las 15:07

Puede guardarlo como un recurso xml en la carpeta Drawables y luego simplemente usarlo y también cambiar el color usando android:backgroundTint="*COLOR OF YOUR CHOOSING*". Quiero decir que lo usarías para botones, así que solo incluye el xml en el fondo del botón

0
Ibrahim117 27 feb. 2020 a las 05:57