如何动态更改TextView的背景颜色

时间:2016-01-20 08:20:34

标签: android textview

这是我的代码:

抽拉\ textview_rounded.xml

 ul.links ul {
        position: relative;
        left: -35px; /* equal to padding left */
    }

templatesgrid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle"  >
            <corners android:radius="20dip" />
            <stroke android:width="1dip" android:color="#667162" />
        </shape>
    </item>
</selector>

我是如何改变颜色的

私有类TemplatesAdapter扩展了ArrayAdapter {

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/TemplateName_txt"
        android:layout_width="match_parent"
        android:layout_height="128dp"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:background="@drawable/textview_rounded"
        android:text="Template">
    </TextView>
</RelativeLayout>

}

所以接下来我的问题是,当我使用setBackgroundColor()动态更改TextView颜色时,TextView会丢失形状设置。有人可以解释如何动态更改TextView颜色和存储形状设置吗?

4 个答案:

答案 0 :(得分:2)

使用Drawable.setColorFilter()为形状着色:

vTemplateItem.getBackground().setColorFilter(Color.argb(255, 255, 0, 0), PorterDuff.Mode.SRC_ATOP);

答案 1 :(得分:0)

你能提供改变背景颜色的全部功能吗?! 什么颜色&#39;?

请尝试使用此代码来解决问题:

TextView mTextView = new TextView(activity); mTextView.setBackgroundResource(getResources().getColor(R.color.green)); mTextView.setText("My Text");

答案 2 :(得分:0)

你应该从你的视图中取出drawable并根据它的类型改变颜色。代码与此类似:

Drawable background = textView.getBackground();
if (background instanceof ShapeDrawable) {
    ((ShapeDrawable) background).getPaint().setColor(getResources().getColor(R.color.your_color));
} else if (background instanceof GradientDrawable) {
    ((GradientDrawable) background).setColor(getResources().getColor(R.color.your_color));
}

答案 3 :(得分:0)

你可以试试下面的代码吗?

修改1:

{{1}}

希望这会对你有所帮助。