2016-03-03 16 views
6

Ho alcuni TextView s che vengono visualizzati uno accanto all'altro. Attualmente, io uso android:background="?attr/selectableItemBackground" per ottenere il ripple in contatto.Increspature con bordo per TextView?

Ora, desidero aggiungere i bordi agli TextView s quando non vengono premuti e avere l'ondulazione quando viene toccato lo TextView. Come lo faccio?

risposta

10

Sulla base di un Styling Android blog post:

Un altro modo che siamo in grado di limitare i limiti di un'animazione ripple è quello di in realtà definire una drawable forma come un bambino

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="?android:colorControlHighlight"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/white" /> 
      <stroke 
       android:color="@color/card_set_bg_color" 
       android:width="1dp" /> 
     </shape> 
    </item> 
</ripple> 

Qui il <solid> in <shape> è necessario per il ripple da rendere. Se impostato su transparent o omesso, il ripple non viene visualizzato. L'ondulazione ha bisogno di uno sfondo solido per il rendering. TextView s non hanno un colore di sfondo, quindi dobbiamo specificare un <solid>.

+1

Soluzione molto geniale e +1 per la risposta dall'interrogante. –