2011-07-12 12 views
0

問題: 私は拡張可能なリストビューを持っています。グループ項目は、右側にオレンジ色の三角形を含むことができます(画像上のように)。この三角形は、Viewから派生し、オーバーライドされたonDrawメソッドによってキャンバス上に描画されます。 これは2つの "例外"でうまく動作します。リストをスクロールバーが消えた後、ユーザーがスクロールした後カスタムの子ビュー - 内部ExpandableListview - スクロールバーが表示された後に再描画が間違っている/再描画されていない

  • は、スクロールバーがいたスペースは、(キャッシュされた?)が正しく再描画ではありません。私は、次の画像上の問題を示す: The problem illustrated as image(残念ながら私は絵を掲示することは許されないのです...)

  • 同じ結果(上の写真の右の3番目の部分は)右の活動の後に存在します1つの画面に表示できるリストコンテンツが多い場合に開始されます。例えばスクロールバーが必要な場合

私はもちろん、カスタムビューとリストビューの描画/表示/キャッシュの問題についていくつかの研究を行いました。残念ながら、私は一致する答えを見つけませんでした。

質問: 問題の原因を想像できますか? カスタムビューに問題がありますか?リストビュー内でカスタムビューを使用するときは、問題に関連するものに注意を払わなければなりませんか?

私は本当に私が今、問題を発見し、あなたの親切な回答、 サンディエゴ

答えて

0

を感謝しています。 onDraw(キャンバスキャンバス)オーバーライドされたメソッドでは、canvas.getClipBounds()を使用して、私のビューの四角形を決定し、三角形をペイントしました。 これは明らかに間違っている可能性があります。 Androidでは、スクロールバーがある領域を再描画して、この領域に設定されたキャンバスにバインドされたクリップを使用してもらいました。

ここで、View.getWidth()& getHeightメソッドを使用して、ペイントできる領域のサイズを決定します。

追加: どういうわけか、私はキャンバスを通してペイントできるビューの長方形を決定することができないと思います。キャンバスの幅と高さは、表示解像度の値に設定されます。たぶん誰かに興味深いコメントがあります...

関連する問題