android - 如何以编程方式圆角并设置随机背景颜色

标签 android android-layout background android-view rounded-corners

我想对 View 进行圆角处理,并在运行时根据内容更改 View 的颜色。

TextView v = new TextView(context);
v.setText(tagsList.get(i));
if(i%2 == 0){
    v.setBackgroundColor(Color.RED);
}else{
    v.setBackgroundColor(Color.BLUE);
}

v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
v.setPadding(twoDP, twoDP, twoDP, twoDP);               
v.setBackgroundResource(R.drawable.tags_rounded_corners);

我希望设置可绘制对象和颜色会重叠,但事实并非如此。无论我第二次执行哪个都是生成的背景。

有没有办法以编程方式创建这个 View ,记住背景颜色要到运行时才会决定?

编辑:我现在只是在红色和蓝色之间交换以进行测试。稍后颜色将由用户选择。

编辑:

tags_rounded_corners.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners 
         android:bottomRightRadius="2dp" 
         android:bottomLeftRadius="2dp" 
         android:topLeftRadius="2dp" 
         android:topRightRadius="2dp"/>
</shape>

最佳答案

检索背景可绘制对象并设置其颜色,而不是 setBackgroundColor:

v.setBackgroundResource(R.drawable.tags_rounded_corners);

GradientDrawable drawable = (GradientDrawable) v.getBackground();
if (i % 2 == 0) {
  drawable.setColor(Color.RED);
} else {
  drawable.setColor(Color.BLUE);
}

此外,您可以在 tags_rounded_corners.xml 中定义填充:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <corners android:radius="4dp" />
  <padding
    android:top="2dp"
    android:left="2dp"
    android:bottom="2dp"
    android:right="2dp" />
</shape> 

关于android - 如何以编程方式圆角并设置随机背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391830/

相关文章:

java - Android/Java 渲染问题 - 无法解析资源/无法转换为可绘制对象

java - 如何通过 XML 将图像添加到 Android TextView

ios - NSURLSession 数据任务 - 处理检索到的数据

javascript - 如何通过 javascript 更改背景重复和背景大小

java - 如何设置改造请求的优先级

android - 无法打开 HAXM 设备 : ERROR_FILE_NOT_FOUND

android - 我在以下代码中遇到类似尝试在关闭流上读取的异常

java - 如何在 Fragment 中捕获 onclick 事件

android - 有没有办法改变 ListView 滚动颜色?

jquery - 如果 CSS 背景在服务器上发生变化,请使用 jQuery 更新它