2017-05-22 15 views
3

J'ai besoin d'ajouter un effet d'entraînement pour tous les contrôles pour ajouter de la vivacité à l'application. Depuis mon niveau minimum d'api 18, donc je ne peux pas utiliser <ripple> en XML tirable. De plus, tous mes contrôles peuvent être personnalisés en XML.Effet d'ondulation avec xml personnalisable?

My Custom Drawable pour les contrôles

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
      <padding 
       android:bottom="2dp" 
       android:left="2dp" 
       android:right="2dp" 
       android:top="2dp"/> 
      <solid android:color="@color/border1"/> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <padding 
       android:bottom="1dp" 
       android:left="1dp" 
       android:right="1dp" 
       android:top="1dp"/> 
      <corners android:radius="15dp"/> 
      <solid android:color="@color/border2"/> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <padding 
       android:bottom="1dp" 
       android:left="1dp" 
       android:right="1dp" 
       android:top="1dp"/> 
      <corners android:radius="15dp"/> 
      <solid android:color="@color/border3"/> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <padding 
       android:bottom="2dp" 
       android:left="2dp" 
       android:right="2dp" 
       android:top="2dp"/> 
      <corners android:radius="15dp"/> 
      <solid android:color="@color/border4"/> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <padding 
       android:bottom="2dp" 
       android:left="2dp" 
       android:right="2dp" 
       android:top="2dp"/> 
      <corners android:radius="15dp"/> 
      <solid android:color="@color/border5"/> 
     </shape> 
    </item> 

    <!-- Background --> 
    <item> 
     <shape> 
      <solid android:color="@color/menu_bg"/> 
      <corners android:radius="15dp"/> 
     </shape> 
    </item> 
</layer-list> 

Si j'utilise android:background="?attr/selectableItemBackgroundBorderless" pour effet d'entraînement de contrôle fonctionne bien. mais le problème est, j'ai un fond personnalisé pour tous mes contrôles, donc je ne peux pas utiliser attr/selectableItemBackgroundBorderless. Comment utiliser attr/selectableItemBackgroundBorderless avec un arrière-plan personnalisable? Je ne veux pas envelopper les contrôles avec des dispositions d'image ou d'autres dispositions .. Y at-il un autre moyen?

Réponses, est actuellement disponible Merci à l'avance

Répondre

2

Utilisez la fonction de premier plan, faire cliquables et focusable vrai.

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"        
    android:background="@drawable/custom_button_disable_fill" 
    android:foreground="?android:attr/selectableItemBackground" 
    android:text="Login" 
    android:saveEnabled="true" 
    android:focusable="true" 
    android:textAllCaps="false" 
    android:textColor="@color/black_bold_medium" 
    android:textSize="@dimen/text_large" 
    app:font_name="@string/sourcesanspro_semi_bold"/>