13

我目前正在开发一个可以检索和查看时间表的应用程序。为了显示时间表,我使用了来自 Google IO 2011 应用程序的 TimeRulerView(以及 BlocksLayout 和 BlockView)java 源文件,因为我喜欢它的外观和感觉。源代码可以在这里找到:https ://github.com/underhilllabs/iosched2011 。(谷歌用 IO2012 的代码替换了其中一个)。

由于我的 Galaxy Nexus 昨天更新了 Jelly Bean(4.1.1),TimeRulerView(和/或其他之一)不再显示。

奇怪的是,它们实际上还在那里,但那里不可见。我可以看到计时器通常具有的长度的滚动条。此外,当我通常单击视图中的一个块时,我会弹出一个小窗口,并且在没有看到计时器或块时仍然会发生这种情况。

我在我的 JB GN 上测试了原始的 IO2011 应用程序,但那里也看不到任何东西,所以问题在于视图(一个)或 JellyBean 呈现视图的方式(可能是项目黄油?)。

请参阅此处 ( https://dl.dropbox.com/u/7102660/TimeRulerView_JellyBean_problem.zip ) 获取 ICS(应用程序工作)、JB(应用程序不工作)和 GoogleIO2011 应用程序的屏幕截图。

4

2 回答 2

7

这可能与硬件加速有关吗?我最近在几部带有 ICS 的手机上遇到了问题,但并非所有手机/设备都受到影响。将 hardwareAccelerated 标记添加到我的清单也不能解决问题,我必须在我不想成为硬件加速的特定视图上定义它。我的解决方案在我的 xml 布局中使用了android:layerType ="software" 并在 java 代码中使用了setLayerType (LAYER_TYPE_SOFTWARE, null)。

编辑:对此进行更多测试,它没有解决我在 Jelly Bean 上使用 setLayerType 的问题。在 ICS 上将图层类型设置为软件确实解决了我的问题。我可以让视图显示的唯一方法是将整个应用程序或特定活动设置为android:hardwareAccelerated="false".

于 2012-08-01T23:28:54.683 回答
4

感谢克里斯的回答,我玩弄了硬件加速设置。我也使用 iosched2011 代码,只需android:layerType="software"从 block_content.xml 文件中的 BlocksLayout 视图中删除该行。

于 2012-08-27T13:19:40.507 回答