2014-09-02 133 views
0

我正在使用资源来设置我的TextView的某些背景样式(特定边框等)。 无法在资源中设置背景颜色,因为它可能因某些规则而异。Android布局资源保留旧值

然而,以后的任何利用这一资源被重用分配的最后一种颜色,即使是在一个完全不同的片段。看起来颜色正在分配给资源,而不仅仅是在TextView中,并在整个应用程序中重用。不过,需要注意的是,不同的TextView正在按照预期显示不同的背景颜色。

该资源的任何其他未来用途使用分配给它,而不是默认的颜色资源XML文件中设置的最后一个颜色这里的问题。每次使用资源时,我都不想在代码中重置它。有没有其他方法?

资源XML(specialbackground) - 注意默认的背景色为白色(#FFFFFF):

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="#FFFFFF" /> 
    <corners android:radius="7dp" /> 
    <stroke 
     android:width="2dip" 
     android:color="#000000" /> 
</shape> 

使用的代码(改变颜色) - 这个工程按预期:

tvText.setBackgroundResource(R.drawable.specialbackground); 
GradientDrawable gd = (GradientDrawable) tvText.getBackground(); 
gd.setColor(myObj.getColor()); 

在代码中使用(发生问题时(未设置任何背景颜色) - 它使用上次定义的任何最后颜色,即使在完全不同的片段中):

tvText.setBackgroundResource(R.drawable.rounded_border); 
+0

您可以发布它目前看起来像 – 2014-09-02 05:39:47

+0

我相信平台具有可绘制回收不检查如果颜色不同比XML – Niko 2014-09-02 05:42:16

+0

@Niko貌似设置问题时的图像! – igorjrr 2014-09-02 05:56:16

回答