2012-05-23 6 views
8

Voglio uno stato di selezione del selettore per un semplice layout da disegnare sopra i suoi figli. Penso che questo è simile all'attributo "drawSelectorOnTop" in ListView. Layout Esempio:Disegna il selettore in alto - per un layout lineare di base?

<LinearLayout 
    android:background="@drawable/my_click_selector"> 
    <LinearLayout 
     android:background="#F00" /> 
</LinearLayout> 

--------------- 
|    | 
| ----------- | 
| ----------- | 
|    | 
--------------- 

Quindi qui abbiamo un layout genitore lineare, ed un bambino interiore che ha un colore solido background (rosso). Quando faccio clic sul genitore, il colore di sfondo della risorsa cambia come definito nel mio selettore, ma poiché il bambino è più vicino all'utente nell'ordine z, rimane invariato.

C'è un modo per fare in modo che il selettore selezionato venga disegnato sopra tutti i bambini anziché sotto?

Grazie

risposta

14

ho affrontare questo problema e ho guardato alla tua domanda prima, ecco quello che ho fatto e ha funzionato perfettamente:

È possibile utilizzare l'attributo FrameLayoutandroid:foreground per fare il lavoro per voi

codice di esempio

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:descendantFocusability="afterDescendants" 
     android:duplicateParentState="true" 
     android:focusable="true" 
     > 

     <FrameLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="true" 
      android:descendantFocusability="beforeDescendants" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:foreground="@drawable/draw_on_top_selector" > 
       <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 

     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#282828" 
     android:paddingBottom="5dp" > 



     <ImageView 

      android:layout_width="160dp" 
      android:layout_height="90dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_gravity="center_vertical|center_horizontal" 
      android:adjustViewBounds="true" 
      android:contentDescription="@string/app_name" 
      android:scaleType="centerCrop" 
      android:src="@drawable/video_blank" /> 

     <TextView 

      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBottom="@id/episodeImage" 
      android:layout_alignLeft="@id/episodeImage" 
      android:background="@android:color/black" 
      android:gravity="right" 
      android:padding="2dp" 
      android:textColor="#FFFFFF" 
      android:textSize="11sp" /> 

    </RelativeLayout> 

</FrameLayout> 
</LinearLayout> 

draw_on_top_selector.xml

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


    <item android:drawable="@drawable/show_cell_background_selected" android:state_pressed="true"/> 
    <item android:drawable="@drawable/show_cell_background"/> 

</selector> 

show_cell_background_selected.xml

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

    <item> 
     <shape android:shape="rectangle" > 
      <stroke 
       android:width="4dp" 
       android:color="#FFD900" > 
      </stroke> 

      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 

</layer-list> 

show_cell_background.xml

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

    <item> 
     <shape android:shape="rectangle" > 
      <stroke 
       android:width="2dp" 
       android:color="#20000000" > 
      </stroke> 

      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 

</layer-list> 
4

recente ho made a post su lotteria un selettore di primo piano in ogni caso. Ti permetterà di evitare layout nidificati.

Spero che questo possa essere d'aiuto.

+0

Acclamazioni CFlex, appena usato il tuo approccio e progettisti esigenti sono felici! +1 – OceanLife

Problemi correlati