2012-10-12 163 views
5

Quiero que mis botones sean transparentes ya que tengo una imagen de la actividad como fondo. Si los botones no son transparentes, esos botones cubren la imagen y el fondo de la imagen parece inútil.Cómo hacer que el botón sea transparente en mi aplicación aún visible

Si uso android:background="@android:color/transparent", hace que mi botón sea completamente invisible excepto el texto que contiene. Por lo tanto, necesito que el botón sea transparente siempre que sea visible que hay un botón. El fragmento de código sería apreciado.

<Button 
android:id="@+id/new_button" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="@android:color/transparent" //this line makes the button completely invisible. 
android:text="@string/label" /> 
+0

No entiendo. ¿Quiere decir que no ve la imagen que establece en la actividad a través del botón? ¿Te refieres a "parcialmente transparente"? – Simon

+0

@Simon Sí, quiero que el botón sea parcialmente transparente. Entonces, debería ser visible que hay un botón. – hrithik

Respuesta

2

Aplicar selector de botón, como este

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true"><shape> 
     <solid 
      android:color="@color/color_1_end" /> 

     <stroke 
      android:width="1dp" 
      android:color="@android:color/transparent" /> // transparent patametr 

     <corners 
      android:radius="4dp" /> 

     <padding 
      android:bottom="10dp" 
      android:left="10dp" 
      android:right="10dp" 
      android:top="10dp" /> 
    </shape></item> 
<item> 
    <shape> 
     <gradient android:angle="270" 
      android:endColor="@color/color_1_start" 
      android:startColor="@color/color_1_end" /> // maybe transparent 

     <stroke 
      android:width="1dp" 
      android:color="@color/color_1_start" /> //maybe transparent 

     <corners android:radius="4dp" /> 

     <padding android:bottom="10dp" 
      android:left="10dp" 
      android:right="10dp" 
      android:top="10dp" /> 
    </shape> 

    </item> 

modificar esto para usted =)

1

Aplicar frontera para el botón

<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#FF000000" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <padding 
      android:bottom="2dp" 
      android:left="2dp" 
      android:right="2dp" 
      android:top="2dp" /> 

     <gradient 
      android:angle="315" 
      android:centerColor="#FFFFFFFF" 
      android:endColor="#FFB0B0B0" 
      android:startColor="#FFB0B0B0" /> 
    </shape> 
</item> 

<Button 
     android:id="@+id/btnLeft" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_margin="7dip" 
     android:background="@drawable/button_border" 
     android:scaleType="centerInside" 
/> 
4
android:background="#A0FFFFFF" 

He duro codificado el color, pero usted debe almacenarlo en colors.xml

Modificar los dos primeros caracteres, A0, para ajustar la cantidad de transparencia que desea y los últimos 6 caracteres del color que desee.

24

Si lo que desea es bordes blancos, y el texto/iconos en el botón, pero el fondo del botón transparente crear los siguientes estirable (I nombraron button_border.xml):

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

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
      <stroke 
       android:color="@android:color/white" 
       android:width="1dp" /> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</selector> 

y utilizarlo como una de fondo del botón:

<Button 
    . 
    . 
    . 
    android:background="@drawable/button_border" 
    /> 

supongo que hay una manera más elegante de hacerlo con temas, pero no estoy tan lejos todavía. En el button_border estirable puede agregar esquinas redondeadas y otras cosas ...

0

sólo tratar de utilizar a continuación el código en Java

<br/> 
    button.getBackground().setAlpha(int);<br/> 
correct range of input parameter is between 1 and 255 and the '1' is more transparent. 
common pitfall is using:<br/> 
    button.setAlpha(float);<br/> 

que marcan el botón transparente.

Cuestiones relacionadas