2017-05-22 36 views
3

我需要爲所有控件添加漣漪效果,以增加應用程序的活力。由於我的最低api級別爲18,所以我無法在可繪製的xml中使用<ripple>。我所有的控件也都可以自定義爲XML。自定義可繪製xml的漣漪效應?

我的自定義繪製對象的控制

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

如果我使用android:background="?attr/selectableItemBackgroundBorderless"控制連鎖反應效果很好。但問題是,我有我的所有控件的自定義背景,所以我無法使用attr/selectableItemBackgroundBorderless。

如何使用自定義可繪製背景的attr/selectableItemBackgroundBorderless?我不想用框架佈局或任何其他佈局包裹控件.. 還有其他方法嗎?

等待迴應,在此先感謝

回答

2

使用前景功能,使可點擊和可聚焦的真實。

<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"/>