2011-09-13 23 views
12

En mi aplicación he configurado una imagen de fondo del dibujo lineal de nivel superior y luego fundido el fondo. Establezco su alfa en .2 pero esto crea un problema extraño en ese también establece el alfa para todos los elementos secundarios del diseño, incluso si defino explícitamente un valor alfa diferente en los elementos secundarios.¿Por qué las vistas secundarias heredan el valor alfa del diseño principal?

¿Es posible establecer el valor alfa de un elemento principal y no afectar el del elemento secundario?

¿Cuál es la forma correcta de establecer el alfa en la vista de nivel superior sin afectar el alfa en las vistas de los niños?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ll1" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:background="@drawable/bg" 
    android:alpha="0.2"> 
     <Button android:id="@+id/btn1" 
      android:text="Set 1" 
      android:layout_width="300px" 
      android:layout_height="150px" 
      android:layout_gravity="center" 
      android:background="@drawable/button1" 
      android:tag="1" 
      android:alpha="1"/> 
     <Button android:id="@+id/btn2" 
      android:text="Set 2" 
      android:layout_width="300px" 
      android:layout_height="150px" 
      android:layout_gravity="center" 
      android:background="@drawable/button2" 
      android:tag="2"/> 
</LinearLayout> 

Respuesta

20

Así es exactamente como debe funcionar.

¿Por qué no simplemente cambiar el alfa de su fondo dibujable "@ drawable/bg" a 0.2?

Alternativamente, probar un FrameLayout con esta estructura básica:

<FrameLayout> 
    <ImageView 
     android:background="@drawable/bg" 
     android:alpha="0.2" /> 
    <LinearLayout> 
     <Button /> 
     <Button /> 
    </LinearLayout>  
</FrameLayout> 
+0

¡muy buena idea! =) –

+0

buenos ides, funcionó para mí ... – krisDrOid

+0

Gracias, trabajo para mí –

1

Necesitará utilizar un framelayout. de otro modo, su botón se cierra mediante una distribución lineal con un conjunto aplha que también afectará a los botones.

3

Una forma es configurar el valor alfa dentro del hash de código para el color es decir, en lugar de utilizar #RRGGBB #AARRGGBB. Esto asegura que el valor alfa no sea heredado.

Cuestiones relacionadas