2017-04-20 12 views
0
<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="?android:attr/colorControlHighlight"> 
    <item> 
     <selector> 
      <item android:state_selected="true"> 
       <layer-list> 
        <item android:left="-5dp" 
          android:top="-5dp" 
          android:right="-5dp"> 
         <shape android:shape="rectangle"> 
          <stroke android:width="3dp" 
            android:color="@android:color/white"/> 
          <solid android:color="@android:color/transparent"/> 
         </shape> 
        </item> 
       </layer-list> 
      </item> 
      <item android:state_selected="false"> 
       <shape android:shape="rectangle"> 
        <solid android:color="@android:color/transparent"/> 
       </shape> 
      </item> 

     </selector> 
    </item> 
</ripple> 

は、ここに私のリップル描画可能であると私はstate_selectedソリッド色を変更したいです。リップルドロアブルのソリッドカラーを変更するにはどうすればよいですか?

コード私が試してみた:

RippleDrawable rippleDrawable = (RippleDrawable) textView.getBackground(); // assumes bg is a RippleDrawable 
     int[][] states = new int[][]{new int[]{android.R.attr.state_selected}}; 
     int[] colors = new int[]{R.color.white}; 
     ColorStateList colorStateList = new ColorStateList(states, colors); 
     rippleDrawable.setColor(colorStateList); 

unfortuantelyそれは...これが可能私が行方不明ですし、ある動作しませんか?

+0

HTTPの

val background = constraintLayout.background as RippleDrawable val bgShape = background.findDrawableByLayerId(R.id.fab_shape) as GradientDrawable bgShape.color = color 

を適用しています。 com/questions/26967872/create-a-ripple-drawable-without-transparencyマスクを使用します。 – reidisaki

答えて

1

アイテムには、java/kotlinを介してアクセスするためのIDを追加する必要があります。 // stackoverflowの:これのソリッドカラーを変更するには
チェックこのような背景のXMLファイル

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="#e0e0e0"> 
    <item android:id="@+id/fab_shape"> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <corners android:radius="25dp" /> 
     <solid android:color="@color/colorAccent" /> 
    </shape> 
    </item> 
</ripple> 

は、constraintLayout背景に、この描画可能なXMLを参照read this

関連する問題