2017-06-07 14 views
0

形状が長方形のストロークの色を変更する方法はありますが、RecyclerViewアダプタの特定の項目の上端ストロークまたは下端ストロークの色を動的に変更したい。Recyclerview Adapterクラスのストロークの色を動的に変更する

描画可能/ border_customここ

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<!-- TOP STROKE--> 
<item android:top="15dp" android:id="@+id/deviceTop"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/ripple_divider" /> 
    </shape> 
</item> 
<!-- BOTTOM STROKE--> 
<item android:top="15dp" android:id="@+id/deviceBottom"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/ripple_divider" /> 
    </shape> 
</item> 
<!--LEFT STROKE--> 
<item android:left="15dp" android:id="@+id/deviceLeft"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/ripple_divider" /> 
    </shape> 
</item> 
<!--RIGHT STROKE--> 
<item android:right="15dp" android:id="@+id/deviceRight"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/ripple_divider" /> 
    </shape> 
</item> 
<!-- MAIN SHAPE --> 
<item android:top="15dp" android:bottom="15dp" android:left="15dp" android:right="15dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/ripple_white" /> 
    </shape> 
</item> 

は私が私のリニアレイアウトにXMLの上に背景

<LinearLayout 
    android:id="@+id/llDevice" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="@drawable/border_device" 
    android:orientation="vertical" 
    android:gravity="center_horizontal|center_vertical"/> 

を使用しています私のXMLファイルであり、私の主な活動XML @

<android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_margin="1dp" 
     android:layout_marginTop="16dp" 
     android:scrollbars="vertical" 
     android:visibility="gone" /> 

異なる色の異なるストロークの色を動的に変更する方法を教えてください。

事前にありがとう:)

答えて

0

あなたは経由LayerDrawableとしてあなたのDrawableのへの参照を取得することができます:

LayerDrawable layerDrawable = (LayerDrawable) getResources() 
        .getDrawable(R.drawable.border_device); 

そして、あなたは自分のIDの

GradientDrawable leftSide = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.deviceLeft); 
経由で異なる層を参照することができます

最後に色を変更してください:

leftSide.setColor(Color.GRAY); 

幸運とハッピーコーディング!

関連する問題