2011-11-15 7 views
1

リストビューを変更して、選択色とアイテムの背景が異なるようにしました。アプリケーションやアクティビティの背景(ソリッドカラー、PNG、グラデーション)でカスタムカラーを設定するまでは、完全に機能しています。私はキャッシュのヒントも使用しようとしましたが、うまくいかないようです。カスタム背景オーバーライドを設定するListViewカスタマイズ

私は昨日全体的にかなりうまくいっていて、答えを見つけられませんでした。私が一番近かったのはこれです。thread

紳士はこれが設計通りだと言えます。リストビュー全体の背景色をどのように変更できるか聞いてみたいのですが(リストビューの領域が空であるかもしれないということです)。

いくつかのコードを見たい場合はhereとなります。

おかげ マニッシュ

答えて

2

私はあなたが求めているものに完全に明確でないんだけど、そう私はどのようにあなたが一緒に作業して遊んでいるすべての項目を説明しましょう、そしておそらくあなたの答えはどこかになります。あなたは、あなたの質問に説明してきた三つの異なる視覚的な要素があります。デフォルトでは、リストのセレクタ

  • 、全体のListViewの背景
    1. リスト項目の背景
    2. に、彼らが描画されますその階層では、(1)が(2)の上に描画され、(2)が(3)の上に描画されるという意味です。カスタマイズされていないListViewでは、項目2 & 3は透明でセレクタは複数の状態を持つ描画可能です。このため、透明性のために、アクティビティまたはListViewの下の任意のビューに適用するカスタムカラーがすべて表示されます。

      これらのものが描かれている順序を見ると、ある要素をカスタマイズすることによって、別の要素に対して行われたカスタマイズがどのように覆い隠されるかを見ることができます。たとえば、リストの各項目に不透明な背景を設定し、listSelector属性の場合、リストは完全に覆い隠されます(drawSelectorOnTopが設定されていない限り...)。なぜなら、開発者が、背景項目)。

      ListViewは別のビューであり、ListView全体にバックグラウンドを提供し、その下に表示されているビューを非表示にする場合は、そのbackground属性を直接設定することができます。繰り返しますが、カスタムリストアイテムの背景を設定する場合は、ListViewがすべての要素を表示するのに十分な大きさで、その下に余分なスペースがある場合を除いて、表示されません。

      cacheColorHintの仕事は、各リスト項目に透明ではなく単色の背景(スクロールしながら)を描画するように指示することによって、スクロールのパフォーマンスを最適化することです。 ListViewまたはActivityの下に単色背景を設定した場合、この値は同じ色に設定する必要があります。背景がグラデーションまたはイメージの場合、この最適化を使用することはできません。透明に設定する必要があります(#0000など)

    +0

    ありがとうございました。時間を取ってくれてありがとうございました。私はlistviewがレンダリングされる順番を理解しています:_background_、_seperators_、_selector_、そして最後に_list items_です。私は自分のアイテムの背景とセレクターを透明にするよう気をつけました。今私は別の問題を抱えています。すべてのものが期待どおりに動作しています。しかし、私はキャッシュカラーヒントを設定していません。技術的には、私が読んだことから、物事はうまくいかないはずです。私は少し混乱しています。 –

    関連する問題