Androidで透明なListView
1672 ワード
リストがスクロールすると、あるitemの背景が透明になるという問題が見つかりました.ネットで検索すると、リストの背景の黒い問題を聞く人が多く、コミュニケーションで与えられた解決策は基本的に統一されていることがわかりました.
まず、問題の原因を説明するのはAndroidがlistのスクロールを表示最適化し、このlistのlayoutファイルに書かれたandroid:cacheColorHintの色値とitemの背景を混合し、黒のテーマの下でこの色値はデフォルトで#FF 191919となり、背景が黒くなった.
解決策は最適化をオフにすることです.どうやって閉めるの?android:cacheColorHintを「@android:color/transparent」に設定したという説もあれば、「@android:color/transparent」を「#00000000」に変更したという説もあります.
実はこの「関」は、その色を透明にすることです.もちろん、背景と同じ色に設定してもよい.または「@null」に設定します.この記事を参考にしてください.http://yuanzhifei89.iteye.com/blog/973724
少しでも力を入れてRomain Guyのブログを検索することができます.RomainはGoogleのAndroid開発エンジニアで、グラフィックやアニメーションに関するものを担当しています.ListViewは彼が作ったと言われています.
彼のこのブログは「Why is my list black?An Android optimization」と呼ばれ、このことを言っている.どのように最適化したのか、この現象がどのように発生したのか、文章でははっきり言っています.文末にも解決策が示され、これは最も権威のある答えだ.
しかし、私が探したすべての議論は、私が出会った状況とはまだ違います.
様々な議論でリスト全体が黒くなったり、透明になったり、少なくとも現在の選択項目を除いたすべてのitemの背景が黒くなったり、透明になったりしているように見えます.
私が出会ったのは、あるitemの背景が透明になったことです.状況のitemはランダムです.
listviewのlayoutファイルでは、android:cacheColorHintが「@android:color/transparent」に設定されており、「#00000000」に変更されても同様です.
ほとんど手の施しようがない場合は、Romainの言う最適化の考え方を理解し、android:cacheColorHintをlistviewの背景色に設定してみましょう.
しかし、listviewマップをバックグラウンドとして、android:cacheColorHintはリソースの設定をサポートしていません.
だから、背景色マップの色に近い不透明な色値をあげてみましょう.まあ、この図は色とりどりではありません.漸進色がありますが、一目ではわかりにくいです.
まあ、一時的に解決しました.
私が出会ったこの状況は、私がテストした多くの携帯電話やタブレットの中で、Lenovo S 890にしか現れません.なぜか誰が知っていますか?
[2013-06-19 Edit]数日後に再びこの問題を見て、背景マップのlistviewに対してcacheColorHint色値を設定できないことが新たに発見され、この方法でこの最適化を閉じることができる.
まず、問題の原因を説明するのはAndroidがlistのスクロールを表示最適化し、このlistのlayoutファイルに書かれたandroid:cacheColorHintの色値とitemの背景を混合し、黒のテーマの下でこの色値はデフォルトで#FF 191919となり、背景が黒くなった.
解決策は最適化をオフにすることです.どうやって閉めるの?android:cacheColorHintを「@android:color/transparent」に設定したという説もあれば、「@android:color/transparent」を「#00000000」に変更したという説もあります.
実はこの「関」は、その色を透明にすることです.もちろん、背景と同じ色に設定してもよい.または「@null」に設定します.この記事を参考にしてください.http://yuanzhifei89.iteye.com/blog/973724
少しでも力を入れてRomain Guyのブログを検索することができます.RomainはGoogleのAndroid開発エンジニアで、グラフィックやアニメーションに関するものを担当しています.ListViewは彼が作ったと言われています.
彼のこのブログは「Why is my list black?An Android optimization」と呼ばれ、このことを言っている.どのように最適化したのか、この現象がどのように発生したのか、文章でははっきり言っています.文末にも解決策が示され、これは最も権威のある答えだ.
しかし、私が探したすべての議論は、私が出会った状況とはまだ違います.
様々な議論でリスト全体が黒くなったり、透明になったり、少なくとも現在の選択項目を除いたすべてのitemの背景が黒くなったり、透明になったりしているように見えます.
私が出会ったのは、あるitemの背景が透明になったことです.状況のitemはランダムです.
listviewのlayoutファイルでは、android:cacheColorHintが「@android:color/transparent」に設定されており、「#00000000」に変更されても同様です.
ほとんど手の施しようがない場合は、Romainの言う最適化の考え方を理解し、android:cacheColorHintをlistviewの背景色に設定してみましょう.
しかし、listviewマップをバックグラウンドとして、android:cacheColorHintはリソースの設定をサポートしていません.
だから、背景色マップの色に近い不透明な色値をあげてみましょう.まあ、この図は色とりどりではありません.漸進色がありますが、一目ではわかりにくいです.
まあ、一時的に解決しました.
私が出会ったこの状況は、私がテストした多くの携帯電話やタブレットの中で、Lenovo S 890にしか現れません.なぜか誰が知っていますか?
[2013-06-19 Edit]数日後に再びこの問題を見て、背景マップのlistviewに対してcacheColorHint色値を設定できないことが新たに発見され、この方法でこの最適化を閉じることができる.
android:scrollingCache="false"
のデフォルトは「true」で、最適化を開くとrenderがより速くなりますが、より多くのメモリが必要です.最適化が受け入れられるかどうかをテストします.