gracias. + 1 por esto. Después de guardarlo en una carpeta dibujable como un archivo xml. ¿Cómo podemos usarlo?
Android Killer
1
@AndroidPower puedes usarlo con R.drawable.FILE_NAME
slayton
2
¿A dónde va este código, en el código .axml para el marcado del botón? ¿Va en un archivo de tipo styles.xml?
theJerm
Usé solo el trazo (y lo hice blanco) para delinear un Botón con blanco. Funciona muy bien con 4.4 pero en 4.0.3 el botón se pone negro, ¿alguna idea de por qué?
Kibi
1
@ Kibi, lo siento, alguien editó mi respuesta y te dio un consejo incorrecto. Lo he cambiado, pero me sorprende que alguien pueda editar una respuesta aceptada y cambiar la utilidad.
Pedantic
57
• Android Official Solution
Desde que se introdujo Android Design Support v28 , es fácil crear un botón con borde usando MaterialButton. Esta clase proporciona estilos de material actualizados para el botón en el constructor. Usando app:strokeColory app:strokeWidthpuede crear un borde personalizado de la siguiente manera:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Veo que tienes textColor y textSize declarado en tu botón XML. ¿Qué sugiere si alguien ya tiene un estilo definido para textColor y textSize y ahora quiere agregar el style="@style/Widget.AppCompat.Button.Borderless"?
Como mencionó, es posible definir un estilo que herede del estilo sin bordes, luego agregar atributos preferidos de acuerdo con el estilo base.
aminografía
Ligeramente OT, pero ¿cuál es el cuarto icono interesante en la barra de acción en la parte inferior del GIF? (También parece que el GIF fue tomado de un dispositivo real, genial)
i336_
1
Tal vez me equivoque, pero para mí en el • Botón de borde sin rellenar, tuve que cambiar, app: backgroundTint = "@ color / transparent" a app: backgroundTint = "@ android: color / transparent"
xarly
37
Crea un button_border.xmlarchivo en tu carpeta dibujable.
Si su botón no requiere un fondo transparente, puede crear una ilusión de un borde utilizando un Diseño de marco. Simplemente ajuste el atributo "relleno" de FrameLayout para cambiar el grosor del borde.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
No estoy seguro de si los archivos xml de forma tienen colores de borde editables dinámicamente. Pero sí sé que con esta solución, puede cambiar dinámicamente el color del borde configurando el fondo FrameLayout.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Sé que es aproximadamente un año tarde, pero también puede crear una imagen de 9 rutas. Hay una herramienta que viene con el SDK de Android que ayuda a crear dicha imagen. Consulte este enlace: http://developer.android.com/tools/help/draw9patch .html
PD: la imagen también se puede escalar infinitamente
Respuestas:
Paso 1: Crear un archivo llamado: my_button_bg.xml
Paso 2: coloque este archivo en res / drawables.xml
Paso 3: inserte el siguiente código
Paso 4: Use el código "android: background =" @ drawable / my_button_bg "donde sea necesario, por ejemplo, a continuación:
fuente
•
Android Official Solution
Desde que se introdujo Android Design Support v28 , es fácil crear un botón con borde usando
MaterialButton
. Esta clase proporciona estilos de material actualizados para el botón en el constructor. Usandoapp:strokeColor
yapp:strokeWidth
puede crear un borde personalizado de la siguiente manera:1. Cuando usas
androidx
:build.gradle
• Botón con borde:
• Botón con borde sin relleno:
2. Cuando usas
appcompat
:build.gradle
style.xml
Asegúrese de que el tema de su aplicación herede en
Theme.MaterialComponents
lugar deTheme.AppCompat
.• Botón con borde:
• Botón con borde sin relleno:
Resultado visual
fuente
style="@style/Widget.AppCompat.Button.Borderless"
?Crea un
button_border.xml
archivo en tu carpeta dibujable.res / drawable / button_border.xml
Y agregue el botón a su diseño de actividad XML y establezca el fondo
android:background="@drawable/button_border"
.fuente
crear drawable / button_green.xml:
y señalarlo como
@drawable/button_green
:fuente
Mire aquí para crear una forma dibujable http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Una vez que haya hecho esto, en el XML para su conjunto de botones
android:background="@drawable/your_button_border"
fuente
Si su botón no requiere un fondo transparente, puede crear una ilusión de un borde utilizando un Diseño de marco. Simplemente ajuste el atributo "relleno" de FrameLayout para cambiar el grosor del borde.
No estoy seguro de si los archivos xml de forma tienen colores de borde editables dinámicamente. Pero sí sé que con esta solución, puede cambiar dinámicamente el color del borde configurando el fondo FrameLayout.
fuente
En su diseño XML:
En la carpeta dibujable, cree un archivo para el estilo de borde del botón:
Y en tu actividad:
fuente
Sé que es aproximadamente un año tarde, pero también puede crear una imagen de 9 rutas. Hay una herramienta que viene con el SDK de Android que ayuda a crear dicha imagen. Consulte este enlace: http://developer.android.com/tools/help/draw9patch .html
PD: la imagen también se puede escalar infinitamente
fuente