Botón de fondo como transparente

177

Tengo un boton Cuando presiono el botón, tengo que poner el texto en negrita, de lo contrario normal. Entonces escribí estilos para negrita y normal.

<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">normal</item>
</style>

Ahora tengo un button_states.xml como:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
    style="@style/textbold" />
<item android:state_focused="false" android:state_pressed="true"
    style="@style/textregular" />

<item style="@style/textregular" />
</selector> 

En mi diseño para este botón, también tengo que hacer que el fondo sea transparente ... ¿Cómo lo haré? Mi código de diseño es:

<Button android:id="@+id/Btn" android:background="@drawable/button_states" />

¿Cómo incluiré el fondo como transparente en mi estilo?

Anju
fuente
3
Muchas de estas buenas respuestas podrían aceptarse ahora ...
QED
echa un vistazo a esta respuesta aquí para hacer el botón transparente con borde
Basheer al-MOMANI
'¿por qué no usas TextView y llamas a la acción en onClick?
Dula wnRp

Respuestas:

360

Para hacer un fondo transparente, solo hazlo android:background="@android:color/transparent".

Sin embargo, su problema parece ser un poco más profundo, ya que está utilizando selectores de una manera realmente extraña. La forma en que lo usa parece incorrecto, aunque si realmente funciona, debería poner la imagen de fondo en el estilo como <item/>.

Eche un vistazo más de cerca a cómo se usan los estilos en la fuente de Android. Si bien no cambian el estilo del texto al hacer clic en los botones, hay muchas buenas ideas sobre cómo lograr sus objetivos allí.

Steve Pomeroy
fuente
1
Echa un vistazo a mi respuesta aclarada. Leí mal su problema para comenzar. El fondo se establece en el estilo.
Steve Pomeroy
Lo siento, no tengo clara la solución. Solo configurar @android: color / transparent no es compatible con los estilos táctiles que tienen los botones normales (y es equivalente a configurar el fondo en @null).
gatoatigrado
@gatoatigrado: ¿quiere decir que desea que un área transparente esté delineada en naranja o sombreada de alguna manera? Si es así, tendrá que crear imágenes personalizadas de 9 parches para eso.
Steve Pomeroy
@StevePomeroy, sí, el efecto de botón predeterminado en Android 4.1 es que [al presionar el botón] el fondo sea azul claro, con un contorno azul aún más claro.
gatoatigrado
@gatoatigrado: ok. Si quieres eso, entonces no puedes usar un botón transparente. No estoy seguro de lo que estás tratando de lograr allí.
Steve Pomeroy
121

Prueba una nueva forma de establecer un fondo transparente

    android:background="?android:attr/selectableItemBackground"
Muhammad Aamir Ali
fuente
9
Esto es lo que recomendaría usar. De esta manera, puedes mantener las hermosas animaciones de diseño de material para tus botones =)
Ryan Newsom
esta es una mejor respuesta
Marcos Dávalos
35

uso #0000(solo cuatro ceros, de lo contrario se considerará como black) este es el código de color para transparente. Puede usarlo directamente, pero le recomiendo que defina un color en color.xml para que pueda disfrutar de la utilidad del código.

Prasham
fuente
9
Afortunadamente, esto ya se ha definido para nosotros como@android:color/transparent
Richard Le Mesurier el
34

Agregue esto en su Xml -android:background="@android:color/transparent"

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Button"
            android:background="@android:color/transparent"
            android:textStyle="bold"/>
Mohanraj
fuente
32

También puede usar: en su xml:

android:background="@null"

o en código:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);
Hunkeone
fuente
¡Vota por dar alternativas, me encanta ver todas las opciones!
Burkely91
18

Lo logré en XML con

android:background="@android:color/transparent"
C. Skjerdal
fuente
9

solía

btn.setBackgroundColor(Color.TRANSPARENT);

y

android:background="@android:color/transparent"
Sindri Þór
fuente
btn.setBackgroundColor (Color.TRANSPARENT); funciona bien para mí
jay_mziray
8

Los selectores funcionan solo para dibujables, no para estilos. Referencia


Primero , para hacer que el fondo del botón sea transparente, use el siguiente atributo ya que esto no afectará las animaciones de diseño de materiales:

style="?attr/buttonBarButtonStyle"

Hay muchas formas de diseñar tu botón. Mira este tutorial .

En segundo lugar , para que el texto aparezca en negrita al presionarlo, use este código java:

btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            // When the user clicks the Button
            case MotionEvent.ACTION_DOWN:
                btn.setTypeface(Typeface.DEFAULT_BOLD);
                break;

            // When the user releases the Button
            case MotionEvent.ACTION_UP:
                btn.setTypeface(Typeface.DEFAULT);
                break;
        }
        return false;
    }
});
Faraz
fuente
1

Puede lograrlo configurando el canal alfa de colores.

El esquema de color es así #AARRGGBB allí A representa el canal alfa (transparencia), R representa el rojo, G para el verde y B para el azul.

Rafael S
fuente
1

Paso 1: cree un nuevo archivo de recursos en dibujable y copie y pegue

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#fff" android:width="2dp"/>
    <corners android:radius="25dp"/>
    <padding android:right="15dp" android:top="15dp" android:bottom="15dp" android:left="15dp"/>
</shape>

guárdelo como ButtonUI (digamos)

Paso 2: aplique la interfaz de usuario al botón xml

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="join the crew"
  android:background="@drawable/ButtonUI"
  android:textColor="#fff"/>
Viraj Singh
fuente
0

Código:

button.setVisibility(View.INVISIBLE);

Xml:

android:background="@android:color/transparent"
Jefe Madog
fuente
0

Podemos usar el atributo android: background en Button xml como a continuación.

android:background="?android:attr/selectableItemBackground"

O podemos usar estilo

style="?android:attr/borderlessButtonStyle" para fondo transparente y menos sombra.

Shihab Uddin
fuente
-2

Aplica el color de fondo como transparent(light gray)cuando hace clic en el botón.

ButtonName.setOnClickListener()

En el método anterior, establece el color de fondo del botón.

Pinki
fuente
66
Preocupado de que esto haya sido votado. No hagas esto, por favor. El futuro mantenedor maldecirá tu nombre. Establezca un fondo con un selector y tenga un color / dibujable para presionado y otro para no. No escriba código para cambiarlo en el oyente, NO es así como se hace.
themightyjon
-2

Puede hacerlo fácilmente agregando el siguiente atributo en el archivo xml. Este código fue probado mucho tiempo.

android:background="@android:color/transparent"
Chamath Jeevan
fuente
2
¿Por qué agregar esta respuesta? Esta solución ya está en otras dos respuestas, incluida la que tiene más votos.
Makyen