Android – borde para el botón

¿Cómo agrego un borde a un botón? ¿Es posible hacer esto sin recurrir al uso de imágenes?

Paso 1: crea un archivo llamado: my_button_bg.xml

Paso 2: Coloque este archivo en res / drawables.xml

Paso 3: inserta el código debajo

      

Paso 4: Use el código “android: background =” @ dibujable / my_button_bg “donde sea necesario, por ejemplo, a continuación:

  

Crea el archivo button_border.xml en tu carpeta dibujable.

res / drawable / button_border.xml

      

Y agregue el botón a su diseño de actividad XML y configure el fondo android:background="@drawable/button_border" .

   

Mire aquí sobre la creación de 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 botón, configure android:background="@drawable/your_button_border"

crear drawable / button_green.xml:

       

y señalarlo como @drawable/button_green :

  

Sé que tiene un año de retraso, pero también puedes crear una imagen de 9 rutas. Hay una herramienta que viene con SDK de Android que ayuda a crear esa imagen. Ver este enlace: http://developer.android.com/tools/help/draw9patch .html

PD: la imagen también puede escalarse infinitamente

Si su botón no requiere un fondo transparente, entonces puede crear una ilusión de un borde usando 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.

En su diseño XML:

  

En la carpeta dibujable, cree un archivo para el estilo de borde del botón:

    

Y en tu actividad:

  GradientDrawable gd1 = new GradientDrawable(); 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(new View.OnClickListener() { @Override public void onClick(View v) { cancelskill.setBackgroundColor(Color.parseColor("#ffffff")); cancelskill.setTextColor(Color.parseColor("#f43f10")); GradientDrawable gd = new GradientDrawable(); 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(); } });