13

現在、スケジュールを取得して表示できるアプリケーションを開発しています。スケジュールを表示するために、ルック アンド フィールが気に入ったので、Google IO 2011 アプリの TimeRulerView (および BlocksLayout と BlockView) Java ソース ファイルを使用しました。ソースコードはhttps://github.com/underhilllabs/iosched2011にあります。(GoogleはそこをIO2012のコードに置き換えました)。

昨日、Galaxy Nexus が Jelly Bean (4.1.1) に更新されたため、TimeRulerView (および/または他のいずれか) が表示されなくなりました。

奇妙なことに、それらは実際にはまだそこにあるのに、目に見えないということです。タイムルーラーが通常持っている長さのスクロールバーを見ることができます。また、通常ビュー内のブロックをクリックすると、小さなポップアップが表示されます。これは、タイムルーラーまたはブロックが表示されていない場合でも発生します。

JB GN で元の IO2011 アプリをテストしましたが、そこにも何も表示されないため、問題はビュー (の 1 つ) または JellyBean がビューをレンダリングする方法にあります (プロジェクト バターでしょうか?)。

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

4

2 に答える 2

7

これはハードウェアアクセラレーションと関係があるのでしょうか? 私はつい最近、ICS を搭載した 2 台の電話で問題に遭遇しましたが、すべての電話やデバイスが影響を受けたわけではありません。ハードウェア アクセラレーション タグをマニフェストに追加しても問題は解決せず、ハードウェア アクセラレーションを望まない特定のビューでタグを定義する必要がありました。私のソリューションでは、xml レイアウトでandroid:layerType ="software" を使用し、Java コードでsetLayerType (LAYER_TYPE_SOFTWARE, null) を使用しました。

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

于 2012-08-01T23:28:54.683 に答える
4

Chris answer のおかげで、ハードウェア アクセラレーションの設定をいじってみました。android:layerType="software"私は iosched2011 コードも使用しており、block_content.xml ファイル内の BlocksLayout ビューから行を削除するだけで済みました。

于 2012-08-27T13:19:40.507 に答える