添加两个XML文件会导致渲染错误。笏?

时间:2013-04-17 03:44:09

标签: android drawable android-xml android-2.3-gingerbread

Android项目是否有某些XML /布局/资源限制/编译工具链中的某些点?将单个(未使用的,任何内容)XML布局文件添加到我的Android项目会导致应用程序中的其他位置出现渲染错误。删除它修复它。这是编译工具链的某些部分的错误,我该如何诊断/修复它?


其他一些背景信息:

我有一个相对较大的Android项目。今天我在添加功能时遇到了一个问题:在旋转应用程序之前,按钮的背景可绘制不会呈现。其他背景/样式/样式按钮仍然有效,但这个背景在应用程序的任何地方都非常破碎。旋转修复它所在的屏幕以及按钮的每个后续实例,直到重新启动应用程序的过程。

经过批次的试验和错误,以及平分和实验之后,我有一定程度的最小再现非常可靠:在我当前项目中添加两个XML布局文件会触发错误。具体来说,在唯一的/ res / layout文件夹中添加第40个XML文件。删除它可以让按钮正确渲染,添加它会打破它。

文件可以完全不使用,完全从头开始,包含任何内容和任何名称。没有其他项目改变。我正在运行Eclipse和Android SDK的最新版本 - 如果需要,我可以获得特定的版本号。它已经在同事设备的同事机器上复制了这个项目。我已经清理,重建,手动删除了构建产品,重新启动了我的电脑,错误仍然存​​在。

必须有一些更具体的原因,我希望能帮助缩小范围。不幸的是,它已经超出了我对Android构建系统的了解,它似乎并不是我直接造成的。有人可以帮忙吗?还是指点一些其他资源?


更多详情

  • (简直不敢相信我忘记了这一点)这似乎只发生在我拥有的2.3.6设备上。它可能发生在其他2.x版本上,但是4.2.2始终正确地呈现按钮(尽管我没有/不能排除另一个位置的错误)。我今天会尝试模拟器。
  • 发生在多个Android设备上,虽然它们基本上都是库存(没有自定义主题等)。
  • 当前的应用程序设置是一个核心应用程序项目,其他三个项目使用该核心项目通过清单合并生成不同的构建(开发,生产等)。
  • 特定的可绘制资源具有唯一的R id,因此它似乎不是碰撞。我没有将它与系统R值进行比较 - 是否有一个好的方法呢?
  • 目标SDK = 17,最小值= 8

同样有趣:将drawable文件从“rounded_teal_button_normal”重命名为“rounded_teal_button_nrml”不会改变任何内容,但将其更改为“rounded_teal_button_aargh” 。只有重要的区别我可以看到,“nrml”不会改变文件的字母顺序,而“aargh”会(有一个“_disabled”文件和“_pressed”)。但是,这会导致现在处于“正常”位置的drawable停止绘制。

更改按钮状态选择器的项目顺序或哪个状态获取哪个可绘制(甚至删除所有其他样式)没有任何效果。

添加第三个​​ XML文件会导致问题消失,并且它似乎不会导致按字母顺序排列的附近的drawables中断,但很难确定它正在解决所有内容,'为什么'的问题仍然存在。

1 个答案:

答案 0 :(得分:1)

需要更多信息才能进行更多有根据的猜测。一旦我遇到类似于GB版本而不是上面的问题,只有在Mac上编译时才会出现;如果在Windows上编译,同样工作正常;问题是背景图像没有出现在按钮上。我的背景图像是一个9补丁,最后我注意到它是由于没有将各个图像放在所有drawable- [m | h | x] dpi中引起的;我只在drawable-xhdpi目录中使用它,所以修复它修复了问题。您可以检查这些类型的问题。例如,这个问题只出现在某些屏幕密度或某些Android版本等上。正如另一个响应所说,40 xml远远没有任何限制。

HTH, 阿里。