我有一个带有背景圆角的textview,我尝试以编程方式更改颜色背景,但它不起作用。
我的代码:
<TextView
android:id="@+id/incident_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/rounded_corner"
android:backgroundTint="@color/soft_grey"
android:clickable="true"
android:gravity="center"
android:layout_marginTop="8dp"
android:layout_marginEnd="2dp"
android:layout_marginRight="2dp"
android:text="Inc"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="visible" />
对于我的圆角我使用此代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff" />
<corners android:radius="50dp" />
</shape>
这是我的java代码,我尝试了这两种方法,但它不起作用:
1- ((TextView) convertView.findViewById(R.id.incident_icon)).setBackgroundColor(mainActivity.getResources().getColor(R.color.honeycombish_blue, null));
2- convertView.findViewById(R.id. incident_icon).setBackgroundResource(R.color.honeycombish_blue);
答案 0 :(得分:4)
替换您的文字视图
<TextView
android:id="@+id/incident_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginEnd="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="8dp"
android:background="@drawable/rounded_corner"
android:clickable="true"
android:gravity="center"
android:text="Inc"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="visible" />
您的 Rounded_corner 文件rounded_corner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff" />
<corners android:radius="50dp" />
</shape>
更改您的Java代码,如下所示。
TextView incident_icon = (TextView) v.findViewById(R.id.incident_icon);
Drawable mDrawable = ContextCompat.getDrawable(mActivity, R.drawable.rounded_corner);
mDrawable.setColorFilter(new PorterDuffColorFilter(ContextCompat.getColor(mActivity, R.color.honeycombish_blue), PorterDuff.Mode.SRC_IN));
incident_icon.setBackground(mDrawable);
答案 1 :(得分:1)
尝试:
在drawable honeycombish_blue.xml
中创建新文件<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#6666FF" />
<corners android:radius="50dp" />
</shape>
这里使用android:color值为蓝色。而不是白色
在java文件中写
convertView.setBackgroundResource(R.drawable.honeycombish_blue);
从xml中删除backgroundTint。
答案 2 :(得分:0)
您正在为Textview设置一个可绘制文件。
android:background="@drawable/rounded_corner"
在你的java代码中,我认为你需要设置
.setBackground(R.drawable.honeycombish_blue);
简而言之,制作一个不同颜色的新drawable文件并将其设置在TextView上。
答案 3 :(得分:0)
感谢@Nikunj Patel的回答
GradientDrawable mDrawable = (GradientDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.DRAWABLE_LAYOUT);
mDrawable.setColor(getContext().getResources().getColor(R.color.white));
YOUR_TEXT_VIEW.setTextColor(getContext().getResources().getColor(R.color.black));
YOUR_TEXT_VIEW.setBackground(mDrawable);