2017-09-01 18 views
0

私は、これは描画可能持っている:Androidの設定色

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/circle"> 
     <shape android:shape="oval"> 
      <size android:width="120dp" android:height="120dp"></size> 
      <stroke android:width="4dp"/> 
     </shape> 
    </item> 

    <item 
     android:id="@+id/person" 
     android:top="16dp" 
     android:bottom="16dp" 
     android:left="16dp" 
     android:right="16dp"> 
     <bitmap android:src="@drawable/ic_person_48dp" /> 
    </item> 

</layer-list> 

私はリサイクルビューに項目としてこれを設定しています:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_margin="10dp" 
    android:clickable="true" 
    android:gravity="center" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/person_icon"/> 

</LinearLayout> 

私はのために別の色を設定したいですバインドメソッドの各セル:

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    ImageView imageView = holder.personImageView; 

    // How do I grab the circle shape and person bitmap from the image view 
    // and set the colors for this cell? 
} 

これはapi 17以降で動作するために必要です。

答えて

2

はこれを試してみてください:

final LayerDrawable layerDrawable = holder.personImageView.getDrawable().mutate(); 
layerDrawable.getDrawable(index).mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN); 

あなたが描画可能なのmutate()メソッドを呼び出す必要があり、それ以外の色はLayerDrawableの各反復のために変更されます。

関連する問題