Android View 背景意外变化

2024-03-30

我正在构建一个具有大量屏幕的应用程序。 大多数屏幕的顶部都有一个带有背景颜色的视图。

我经常使用 view.setBackgroundColor(color) 更改颜色

奇怪的事情来了:有时在设置一个视图的颜色后,例如 #f14fb7 ,在应用程序中导航时,其他视图的背景会设置为该颜色,而我并不希望它们这样做。 有时甚至会发生在我没有设置 id 的视图上,因此无法在这些视图上调用 setBackgroundColor 。

这种情况很少发生,并且与我尝试过的任何流程都不一致。

当我终止该应用程序并重新启动它时,一切都会按预期进行。

我唯一的猜测是内存泄漏之王,但我希望有一个更简单的解释。

有人能想到发生这种情况的原因吗?

*它发生在我的 Galaxy S3 上。


没有代码,这并不容易......但我猜你正在重用相同的代码ColorDrawable在多个视图上,如果你看一下View.setBackgroundColor()源代码 :

public void setBackgroundColor(int color) {
    if (mBGDrawable instanceof ColorDrawable) {
        ((ColorDrawable) mBGDrawable).setColor(color);
    } else {
        setBackgroundDrawable(new ColorDrawable(color));
    }
}

你可以看到它改变了颜色ColorDrawable并且不要每次都创建一个新的。我很确定这就是你有这种奇怪行为的原因。

EDIT

当您在 xml 中设置初始背景颜色时android:background你正在这样做(根据安卓文档 http://developer.android.com/reference/android/view/View.html#attr_android:background):

将背景设置为给定资源。资源应该引用一个 Drawable 对象

根据我的理解,它将设置字段View.mBGDrawable充气期间。我建议你使用View.setBackgoundDrawable(new ColorDrawable(the_color_int_code)))代替setBackgroung(the_color_int_code)。它应该可以解决你的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android View 背景意外变化 的相关文章

  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • 确定最接近的已知颜色

    我允许我的应用程序的用户选择自定义颜色 并希望有一种方法来显示每种颜色的友好名称 而不是显示十六进制代码的文本表示形式 我如何找到最近的System Drawing Color对于给定的十六进制代码 希望这对某人有帮助 Public Fun
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • 如何在我现有的 Android 应用程序中使用 Telegram API(包括聊天应用程序)?

    我想使用 telegram API 在我现有的 Android 应用程序中开发聊天功能 我不知道如何实施 我认为 看看Telegram 数据库库 测试版 从这里TDLib https core telegram org tdlib 俄语 但
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • Android Studio 与本地网络共享上的项目文件

    这是我的设置 Android Studio 项目文件位于 Ubuntu 14 10 盒子上的共享文件夹中 尝试在 Windows 8 机器上运行 Android Studio 1 0 2 并将 U 驱动器映射到包含项目文件的 Ubuntu
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne

随机推荐

  • 如何从源代码构建 VSCode 应用程序包

    我正在尝试在 Mac 上从源代码构建 VSCode 并制作应用程序包 我尝试以下这些说明 https github com Microsoft vscode wiki How to Contribute packaging这表明你可以运行g
  • 向量迭代器

    我有以下代码 vector
  • 如何告诉 python HTMLParser 停止

    我有一个用例告诉我们当标签是link它的属性是rel dns prefetch然后就说预解析dns已启用 我做了一个标志pre resolve dns enabled并将其设置为 true 如下所示 class Extractor HTML
  • Laravel:获取调用控制器方法的视图的名称

    在 Laravel 中 是否可以获取调用您当前所在的控制器方法的视图的名称 我的网站中有两个版本的表单 一种是在网站 外部 使用 即用户未登录 另一种是在网站 内部 使用 这些表单在表示上略有不同 但它们包含所有相同的字段并调用相同的存储方
  • 在 Spring MongoDB 中的 ReplaceRoot 管道阶段中使用 $mergeObjects

    我希望将这个片段复制到 Java 代码中 db getCollection admins comptes client ceov4 aggregate lookup from contrats ceov4 localField CUSTOM
  • 实现 retryWhen 逻辑

    我有一个需要会话 cookie 来处理网络调用的应用程序 我在用着Retrofit RxJava 但是 会话可能会过期 带有 401 未经授权状态的改造错误 在这种情况下我想重新进行身份验证 以获取新的 cookie 并重试之前的调用 我该
  • Python:编写csv文件

    我试图在 Windows 计算机上使用 Python 3 2 编写一个简单的 CSV 文件 但是我没有运气 来自Python 3 2 的 csv 模块文档 http docs python org release 3 2 library c
  • 在 C 中解析日期 Http 标头的简单方法是什么?

    我想解析电子邮件 http 日期标头 有没有一种简单的方法可以做到这一点 而无需编写自己的字符串解析函数 Example Date Fri 19 Mar 2010 11 44 02 0700 为了澄清 解析出Date 这部分很简单 我正在谈
  • Zend 框架引导问题

    我已经在新安装 Zend Framework 应用程序一段时间了 但我不知道发生了什么 我有两个想要使用的自定义操作助手 并且我想在引导程序中初始化它们 但似乎我的 init 函数根本没有被调用 在启动应用程序的 index php 中 我
  • 如何更改 IPV6 地址的字节顺序(从网络到主机,反之亦然)?

    我知道ntoh s l and hton s l 适用于 2 和 4 字节的整数 现在 我面临着转换 16 个字节长的 IPv6 地址的问题 是否有用于此目的的现成函数 TIA Jir 我不确定ntoh and hton与 IPv6 相关
  • 为什么我不能在 Konva.Shape.fillPatternImage(imageObj) 中使用 Konva.Image()?

    以下是来自的示例Konvajs http konvajs github io docs shapes Image html加载图像的库 var imageObj new Image imageObj onload function var
  • Mongoose 模式要求数组可以为空

    我有这个架构 var StuffSchema new mongoose Schema id type String required true unique true name type String required true mongo
  • 构建 Java EE 6 项目时出现 FilerException

    我在 Netbeans 7 中有一个 Java EE 6 项目 当我在 IDE 中编译并启动它时 该项目运行良好 但是 当我清理和构建项目时 我得到了 java lang RuntimeException javax annotation
  • 如何提高@patch和MagicMock语句的可读性和可维护性(避免长名称和字符串标识)?

    在我的测试代码中 我有很多样板表达式 Magic return 我还有很长的字符串来标识要模拟的函数的路径 重构期间不会自动替换字符串 我更愿意直接使用导入的函数 示例代码 from mock import patch MagicMock
  • 如何在远程存储库上运行 hg recovery 命令

    在 teamcity 中运行构建时出现以下错误 Failed to collect changes error C Program Files TortoiseHg hg exe config ui interactive False pu
  • 在 cakephp 中分配布局

    我们可以在该特定控制器中为整个控制器定义一个布局吗 我之前已经在应用程序控制器的过滤器之前用于此目的 但它不再解决它 所以我需要在控制器中应该有一些适用于的布局定义该控制器的所有操作 Regards use it 在你的行动中 this g
  • JavaScript - 对象字面量的优点

    我读过 我应该使用对象文字 而不是简单地编写一堆函数 对象字面量有什么优点 有例子吗 正如 Russ Cam 所说 您可以避免污染全局命名空间 这在当今组合来自多个位置 TinyMCE 等 的脚本时非常重要 正如 Alex Sexton 所
  • 如何使用 WebApplicationFactory 覆盖 Autofac 容器中的服务

    我正在使用 WebApplicationFactory 编写一些集成测试 我使用 Autofac 作为我的依赖解析器 在我的测试中 我试图覆盖其中一项注册 以便我可以模拟其中一项依赖项 使用aspnetcore默认的ConfigureSer
  • 如何将html5画布保存到服务器

    我将一些图像加载到我的画布上 然后在加载后我想单击一个按钮将该画布图像保存到我的服务器上 我可以看到脚本工作正常 直到它到达 toDataURL 部分并且我的函数停止执行 我究竟做错了什么 这是我的代码
  • Android View 背景意外变化

    我正在构建一个具有大量屏幕的应用程序 大多数屏幕的顶部都有一个带有背景颜色的视图 我经常使用 view setBackgroundColor color 更改颜色 奇怪的事情来了 有时在设置一个视图的颜色后 例如 f14fb7 在应用程序中