我目前正在开发一个应用程序,可以使用该应用程序检索和查看计划。为了显示时间表,我使用了来自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应用程序的屏幕截图。
答案 0 :(得分:7)
这可能与Hardware acceleration有关吗?我刚刚在带有ICS的几部手机上遇到了一个问题,但并非所有手机/设备都受到影响。将hardwareAccelerated标记添加到我的清单中也没有解决问题,我不得不在特定视图上定义它,我不希望硬件加速。我的解决方案使用android:layerType ="软件"在我的xml布局中,并在java代码中setLayerType(LAYER_TYPE_SOFTWARE,null)。
编辑:测试更多,它没有使用Jelly Bean上的setLayerType解决我的问题。在ICS上将图层类型设置为软件确实解决了我的问题。我可以将视图显示的唯一方法是将整个应用程序或特定活动设置为android:hardwareAccelerated="false"
。
答案 1 :(得分:4)
感谢Chris的回答,我玩了硬件加速设置。我也使用iosched2011代码,只需从block_content.xml文件中的BlocksLayout View中删除行android:layerType="software"
。