2011-02-10 15 views
124

Tengo un botón. Cuando presiono el botón, tengo que hacer que el texto aparezca en negrita, de lo contrario, es normal. Así que escribí estilos para negrita & normal.Fondo del botón como transparente

<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 una 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, tengo que hacer el fondo transparente como también ... ¿Cómo lo hago? 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?

+3

Así que muchas de estas buenas respuestas podría ser aceptado por ahora ... – QED

+0

la salida [esta respuesta aquí] (http://stackoverflow.com/questions/12856661/how-to-make-button-transparent -in-my-app-yet-visible # answer-12856901) para hacer un botón transparente con el borde –

+0

'¿por qué no solo usas un TextView y llamas la acción en onClick? –

Respuesta

0

Aplicar el color de fondo como transparent(light gray) al hacer clic en el botón.

ButtonName.setOnClickListener() 

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

+4

Preocupando 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 presionar y otro para no.No escriba código para cambiarlo en el oyente, NO es así como se hace. – themightyjon

295

Para hacer un fondo transparente, simplemente haz 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 la está usando parece incorrecta, 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í.

+0

Ya estoy dando android: fondo como el xml .. – Mathew

+1

Echa un vistazo a mi respuesta aclarada. Leí mal tu problema para comenzar. El fondo se establece en el estilo. –

+0

+1 ¡Gran respuesta! ¡Gracias por tu ayuda! – BlackHatSamurai

33

use #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 reutilización del código.

+9

Afortunadamente, esto ya se ha definido para nosotros como '@android: color/transparent' –

28

Añadir 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"/> 
24

También puede utilizar: en su xml:

android:background="@null" 

o en el código:

buttonVariable.setBackgroundColor(Color.TRANSPARENT); 
+0

Voto a favor de alternativas, ¡me encanta ver todas las opciones! – Burkely91

66

Trate de nuevo forma de establecer el fondo transparente

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

Esto es lo que recomendaría usar. De esta forma, puedes mantener las bellas animaciones de diseño de materiales para tus botones =) –

5

que utilizan

btn.setBackgroundColor(Color.TRANSPARENT); 

y

android:background="@android:color/transparent" 
0

Código:

button.setVisibility(View.INVISIBLE); 

xml:

android:background="@android:color/transparent" 
1

Puede lograr eso configurando los colores del canal alfa.

El esquema de color es así #AARRGGBB allí A significa alpha channel (transparencia), R significa rojo, G para verde y B para azul.

1

Los selectores funcionan solo para los modelos, no para los estilos. Reference


Primera, para que el botón de fondo utilización transparente el siguiente atributo ya que esto no afectará a las animaciones de diseño de materiales:

style="?attr/buttonBarButtonStyle" 

Hay muchos el estilo de su botón. Compruebe this tutorial hacia fuera.

Segunda, para que el texto en negrita en presionada, utilice el 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; 
    } 
}); 
2

que logra esto con en XML con Android: Fondo = "@ android: el color/transparente"

0

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

android:background="@android:color/transparent" 
Cuestiones relacionadas