如何在Android上使用shape属性在运行时更改TextView的颜色?
我正在使用这样的形状属性:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="10dp">
<solid
android:color="#FFFFFF" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
如果
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_textview">
</TextView>
我使用以下方法在运行时更改颜色:
TextView.setBackgroundColor();
我使用的形状就会消失。我该怎么做才能用正确的方式改变它? 或者我是否必须为不同的颜色生成大量形状?
谢谢。
I'm using shape attribute like this:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="10dp">
<solid
android:color="#FFFFFF" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
and
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_textview">
</TextView>
If I change the color at runtime with the following method:
TextView.setBackgroundColor();
The shape I used is disappear. What should I do to change it with the proper way?
Or should I must have to generate lots of shape for just different colors?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我找到了一个 PaintDrawable 解决方案,其中包含颜色和半径属性。
但它必须在构造函数中设置颜色。所以我每次都必须在运行时新建一个 PaintDrawable 并将其设置为 TextView 的背景可绘制对象。
I found a solution with PaintDrawable which contains color and radius attributes.
But It have to set the color in the contructor. So I have to new a PaintDrawable at runtime every time and set it to the background drawable of a TextView.
您需要使用正确的实体元素将背景设置为不同的形状。 setBackgroundColor 我相信只是一个捷径:
所以是的,你需要一些形状:)
You need to set the background a different shape with the correct Solid element. setBackgroundColor I believe just is a short cut to something like:
So yea you will need a few shapes :)
我也遇到了同样的问题
你可以使用这个方法
它对我来说效果很好!
I had the same problem
You can use this method
It works fine for me!