当前位置: 首页 > 知识库问答 >
问题:

Android布局资源保留旧值

方永贞
2023-03-14

我正在使用资源设置TextView的一些背景样式(特定边框等)。无法在资源中设置背景颜色,因为它可能会根据某些规则而变化。

然而,以后使用该资源时,即使是在完全不同的片段中,也会重用最后指定的颜色。看起来颜色被分配给了资源,而不仅仅是在TextView中,并且在整个应用程序中重复使用。然而,重要的是要注意,不同的TextViews按预期显示不同的背景颜色。

这里的问题是,资源的任何其他未来使用都是使用分配给它的最后一种颜色,而不是资源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);

共有1个答案

施晗昱
2023-03-14

在设置绘图对象的任何值之前,使用mutate()

来源:http://www . curious-creature . org/2009/05/02/draw able-mutations/

 类似资料:
  • 有时我会看到这样的警告: 如果我重写或不重写布局资源会发生什么?

  • 移动设备 我们为移动设备提供了 10 种模版,你可以使用这些模版来规范设计。 Layout Mobile Whiteframe - 2 MB(.ai) 平板设备 我们为平板设备提供了 14 种模版,你可以使用这些模版来规范设计。 Layout Tablet Whiteframe - 3 MB(.ai) 桌面环境 我们为桌面环境提供了 4 种模板,每种都包含 4 个不同屏幕尺寸,你可以使用这些模版来

  • 我在尝试完全以编程方式进行此布局时遇到了问题,每次进程运行结束时都没有成功,应用程序崩溃。 XML im试图以编程方式创建的部分是: 我试图用以下kotlin代码重新创建它: 这就是我在logcat中遇到的错误 我仍在研究它可能是什么,我怀疑它可能是错误的LayoutParams,但如何以编程方式正确设置这些资源还不是很清楚。 提前谢谢。 PD:如果我发现了什么,我会更新。 欢迎任何帮助! 更新1

  • 我正在尝试为我正在编写的应用程序支持尽可能多的android设备,但在尝试这样做的过程中,我发现了一个奇怪的问题。我为每个屏幕大小和密度组合(例如,drawable-small-mdpi,drawable-large-ldpi等)拥有可绘制文件夹,并为每个屏幕大小限定符拥有布局文件夹。我设置了用于测试小LDPI(我刚刚使用了WQVGA432)和小HDPI场景(我使用了WQVGA皮肤并将抽象密度设置

  • 调用可缓存方法->返回有效结果 结果将由Spring@Cacheable后端缓存 Spring使缓存无效,因为它已过期(例如,1小时的TTL) 再次调用可缓存方法->返回异常/空值! 旧的结果将被再次缓存,因此,方法的未来调用将返回有效结果 这怎么可能?

  • 问题内容: 我正在构建一个jar,以便其他开发人员可以使用我在其Android应用程序中创建的视图。我想知道是否有可能在jar中使用布局资源,以便可以构建视图的布局,或者是否需要以编程方式构建视图。同样,我可以在jar文件中包含图像资源吗? 问题答案: 不,目前不行。由于Android将资源打包到apk中的方式,您不能将它们包含在jar中。但是,您仍然可以与其他开发人员共享jar,他们只需要手动拉