2017-05-22 4 views
3

모든 컨트롤에 리플 효과를 추가하여 애플리케이션에 활발함을 추가해야합니다. 내 최소 API 레벨 18 이후 drawable 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"/>