2011-09-13 11 views
12

Nella mia app ho impostato un'immagine di sfondo del linearlayout di livello superiore e quindi per sfumare lo sfondo ho impostato il suo alpha su .2 ma questo crea un problema strano in quel imposta anche l'alfa per tutti i bambini del layout, anche se definisco esplicitamente un valore alfa diverso nei bambini.Perché le viste secondarie ereditano il valore alfa dal layout principale

È possibile impostare il valore alfa di un genitore e non influenzare quello del bambino?

Che cosa c'è un modo corretto per impostare l'alfa nella vista di primo livello senza influenzare l'alfa su tali punti di vista bambini?

<?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> 

risposta

20

Questo è esattamente il modo in cui è destinato a funzionare.

Perché non cambiare semplicemente l'alfa del tuo background drawable "@ drawable/bg" a 0.2?

alternativa, provare un FrameLayout con questa struttura di base:

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

ottima idea! =) –

+0

idi piacevoli, ha funzionato per me ... – krisDrOid

+0

Grazie lavoro per me –

1

È necessario utilizzare un framelayout. Altrimenti il ​​tuo pulsante è animato da una linearlayout con aplha set che influenzerà anche i pulsanti.

3

Un modo è quello di impostare il valore alfa all'interno del hash-codice per colore cioè invece di usare #RRGGBB #AARRGGBB. Questo assicura che il valore alfa non sia ereditato.

Problemi correlati