这是我的代码:
抽拉\ 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颜色和存储形状设置吗?
答案 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}}
希望这会对你有所帮助。