2012-07-18 9 views
13

現在、スケジュールを取得して表示できるアプリケーションを開発中です。スケジュールを表示するには、Look&Feelが好きなので、Google IO 2011アプリからTimeRulerView(とBlocksLayoutとBlockView)Javaソースファイルを使用しました。ソースコードはhttps://github.com/underhilllabs/iosched2011にあります。 (GoogleはIO2012のコードで置き換えた)。Android Jelly Beanで表示されないビュー

昨日私のGalaxy NexusがJelly Bean(4.1.1)を更新して以来、TimeRulerView(および/または他のもの)はもう表示されません。

奇妙なことは、実際にはまだそこにありますが、目に見えないことです。タイマーラーが通常持っている長さのスクロールバーを見ることができます。また、私は通常、ビュー内のブロックをクリックすると少しポップアップを取得し、これはまだタイマーやブロックを見ていないときに発生します。

オリジナルのIO2011アプリを自分のJB GNでテストしましたが、そこに何も表示されないので、問題はビューの中にあるか、JellyBeanがビューをレンダリングする方法にあります。 ?)。

ICS(アプリの動作)、JB(アプリが動作しない)、GoogleIO2011アプリのスクリーンショットについては、こちら(https://dl.dropbox.com/u/7102660/TimeRulerView_JellyBean_problem.zip)をご覧ください。

+0

私はImageViewsで同じ問題があります。ゼリービーンズに更新されて以来、イメージはもう表示されません。レイアウト空間は適切に計算されますが(私はカスタム配列アダプターのgetViewでそれらを操作します) – eftokay83

+2

あなたのビューの範囲を見るためにhierarchyviewerツールを使用してください。ウィジェットの高さがゼロかどうか、または子ビューに問題があるか、サイズが正しく計算されていて、コンテンツが描画されていないことがわかります。この情報を使用して移動することができます。 –

答えて

4

Chrisのおかげで、私はハードウェアアクセラレーションの設定で答えました。私もiosched2011コードを使用し、ブロックをblock_content.xmlファイル内のBlocksLayout Viewから削除するだけでした。

+0

このソリューションは、最終的に私のカスタムビューを表示させたものですが、その中には不自然なものや間違ったものがありました。私はアンドロイド:hardwareAccelerated = "false"をマニフェストのアクティビティに追加しなければならなかったので、すべて正常に動作するようになりました。 – SilithCrowe

7

これはHardware accelerationと関係がありますか?私は最近、ICSを搭載したカップルの電話機に関する問題に直面しましたが、すべての電話機やデバイスが影響を受けるわけではありません。 hardwareAcceleratedタグをマニフェストに追加しても問題は解決されませんでしたが、ハードウェアアクセラレーションを望まない特定のビューで定義する必要がありました。私の解決策は、私のxmlレイアウトでandroid:layerType = "ソフトウェア"を使用し、javaコードでsetLayerType(LAYER_TYPE_SOFTWARE、null)を使用しました。

EDIT:これ以上テストすると、setLayerTypeを使ってJelly Beanで問題を修正できませんでした。 ICSのレイヤータイプをソフトウェアに設定すると、問題が解決しました。ビューを表示できる唯一の方法は、アプリケーション全体または特定のアクティビティをandroid:hardwareAccelerated="false"に設定することでした。

+0

アンドロイド:hardwareAccelerated = "false"が私のために最終的にこれを解決しました。さらにStefan Arnのソリューションです。 – SilithCrowe

関連する問題