【问题标题】:Changing the color of the stroke dynamically in Recyclerview Adapter class在 Recyclerview Adapter 类中动态更改描边的颜色
【发布时间】:2017-11-09 00:42:20
【问题描述】:

如何改变矩形的笔触颜色?我想在 RecyclerView Adapter 中的特定项目的顶部笔划或底部笔划颜色中动态更改颜色。

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

我怎样才能做到这一点?

【问题讨论】:

  • 你成功了吗?

标签: android xml


【解决方案1】:

您可以通过以下方式将 Drawable 引用为 LayerDrawable:

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

然后你可以通过它们的 id 引用你的不同层

GradientDrawable leftSide = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.deviceLeft);

最后修改它的颜色:

leftSide.setColor(Color.GRAY);

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多