在Recyclerview Adapter类

时间:2017-06-07 15:07:00

标签: android xml

如何更改形状为矩形的笔触颜色,但我想在RecyclerView适配器中以特定项目的顶部笔划或底部笔触颜色动态更改颜色。

@绘制/ 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文件,我在我的线性布局中使用上面的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

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

请帮我解释如何动态地改变不同颜色的不同颜色。

提前的Thanx:)

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取Drawable作为LayerDrawable的引用:

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

然后你可以通过他们的id

引用你的不同层
GradientDrawable leftSide = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.deviceLeft);

最后修改它的颜色:

leftSide.setColor(Color.GRAY);

祝你好运,快乐的编码!