redondo - manual de programacion android pdf
Android-borde para el botón (7)
Crea el archivo button_border.xml
en tu carpeta dibujable.
res / drawable / button_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#FFDA8200" />
<stroke
android:width="3dp"
android:color="#FFFF4917" />
</shape>
Y agregue el botón a su diseño de actividad XML y configure el fondo android:background="@drawable/button_border"
.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_border"
android:text="Button Border" />
¿Cómo agrego un borde a un botón? ¿Es posible hacer esto sin recurrir al uso de imágenes?
En su diseño XML:
<Button
android:id="@+id/cancelskill"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_weight="1"
android:background="@drawable/button_border"
android:padding="10dp"
android:text="Cancel"
android:textAllCaps="false"
android:textColor="#ffffff"
android:textSize="20dp" />
En la carpeta dibujable, cree un archivo para el estilo de borde del botón:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#f43f10" />
</shape>
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();
}
});
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"
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
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#FFFFFF"
android:endColor="#00FF00"
android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>
Paso 4: Use el código "android: background =" @ dibujable / my_button_bg "donde sea necesario, por ejemplo, a continuación:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Text"
android:background="@drawable/my_button_bg"
/>
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.
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1sp"
android:background="#000000">
<Button
android: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.
crear drawable / button_green.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#003000"
android:centerColor="#006000"
android:endColor="#003000"
android:angle="270" />
<corners android:radius="5dp" />
<stroke android:width="2px" android:color="#007000" />
</shape>
y señalarlo como @drawable/button_green
:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/button_green"
android:text="Button" />