2012-05-23 14 views
8

Quiero un estado de clic selector para un diseño simple para dibujar encima de sus hijos. Creo que esto es similar al atributo "drawSelectorOnTop" en ListView. Ejemplo de composición:Selector de dibujo en la parte superior: ¿para un diseño lineal básico?

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

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

Así que aquí tenemos una disposición lineal de los padres y un niño interior que tiene un color de fondo sólido (rojo). Cuando hago clic en el elemento primario, el color de fondo del activo cambia según lo definido en mi selector, pero como el elemento secundario está más cerca del usuario en el orden z, no cambia.

¿Hay alguna manera de tener seleccionado el selector, estado dibujado sobre todos los elementos secundarios en lugar de debajo?

Gracias

Respuesta

14

que se enfrentan a este problema y miré a tu pregunta antes, aquí lo que hice y funcionó a la perfección:

Usted puede utilizar el atributo FrameLayoutandroid:foreground para hacer el trabajo para usted

código de ejemplo

<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

Recientemente made a post sobre el dibujo de un selector de primer plano en cualquier punto de vista. Le permitirá evitar diseños anidados.

Espero que esto ayude.

+0

Saludos CFlex, acaba de utilizar su enfoque y los diseñadores exigentes son felices! +1 – OceanLife

Cuestiones relacionadas