目的は、アダプタがListViewを返すギャラリーを実装することです(つまり、水平方向にスクロールするギャラリーに埋め込まれたListViewを垂直方向にスクロールすること)。それは仕事のビットの後に並べ替えられますが、水平にスクロールしようとすると、ListViewは非常にジッタがあります。私はギャラリーに埋め込まれた他のタイプのビューでこの種の動作を観察していません。ここでGallery内にリストビューを埋め込む
は、私が試したものです:
を最初に、私はListViewコントロールはタッチイベントを押しつぶしことがわかったので、ギャラリーにジェスチャーリスナーは解雇れることは決してありません。 ListViewコントロールが膨張して構成された後、ギャラリーアダプタのgetViewメソッド()メソッドの内部で、次に
galleryGestureDetector = new GestureDetector(this, gallery);
:
だから活動ののonCreate()メソッドでは、私がGestureDetectorを作成しました私もリストビューのonTouchEvent()メソッドが実際に呼び出されないことを確実にするためにOnTouchListenerからtrueを返すの極端なステップに行っている。この場合
listView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
galleryGestureDetector.onTouchEvent(event);
return true;
}
});
:、私はこのようないくつかのコードを持っています。同じ不安定な動作が発生します。結果として、私は2つのビューの間で競合するonTouchEvent()実装を除外することができると思う。
TouchDelegateの概念を悪用しようとしましたが、ギャラリーのタッチ矩形を拡張してListViewを含むようにしてから、ListViewにそれを委任しましたが、これは無駄な努力でした。
私は手を投げて、それは現時点では不可能だと言いますが、DroidXでパックされているソーシャルネットワーキングアプリは何とかそれを達成しています!
ギャラリーがレンダリングされるたびにリストビューがたくさんのビューを作成/膨張させていないかどうかを確認することがあります。それが問題であるかどうかを確認するために、キャッシングを試みてください(またはただ1つの静的フィールドを使用してください)。 – monkjack
良い考えのモンクジャック、実際には、ギャラリーが選択から外れた後にアダプタから返されたListViewをリサイクルしていたようです。私は、あなたが提案したようなビューをキャッチしようとしました.3つの要素のうち、3つのビューだけが膨らんでいるというこの問題の解決方法をテストするために使用している要素を確認しました。残念ながら、私は同じ結果を見ています...ビューが少々スライドすると、狂ったようにジッタがかかり始めます。 – jkschneider
さらに不思議なことに、私は、ListViewがジッタを起こした後でも水平方向にスクロールしようとすると、ギャラリーが時には2つのビュー間でスタックすることに気付きました。 – jkschneider