どのように私はScrollViewにない、またはScrollViewが無効になっているリストビューを作成するのですか?

StackOverflow https://stackoverflow.com/questions/2419246

  •  19-09-2019
  •  | 
  •  

質問

私はなど、ListAdapter、および項目選択を使用することができるというように、リストビューでのグッズの一部をしたいが、私はそれのScrollView部分を望んでいません。私はその部分を自分で実装する、異なる方法で(なぜか、どのように私はこれを行う本当にこの質問のポイントではありませんので、「なぜ」聞かないでください)。

ScrollViewではないか、スクロールが無効になっているListViewコントロールを持ってする方法はありますか?

役に立ちましたか?

解決

ListViewScrollViewではありません。 ListViewはinstrinsicallyスクロールありません。私はあなたが簡単なAPIをスクロール無効にすることができます信じていません。もしそうなら、あなたの選択肢はListViewをサブクラス化し、行動、クローンListViewをスクロールオーバーライドして、行動をスクロールなくす、あるいは物事にあなたが望むようにレンダリングする独自のAdapterViewを書くための方法を見つけようとするかのいずれかです。

他のヒント

これを実行する別の方法は、あなたがでっち上げてきたものは何でもカスタムスクロール溶液中ListViewをラップすることです。あなたは、単にListViewの高さは、全ての行(リストビューのLayoutParamsを使用)と全く同じ高さに設定した場合、それは通常のビューのように行動し、スクロールすることができません。したがって、あなたは別のスクロールビューに追加することができます。この方法の難点は、あなたが先に時間のあなたのリストの高さを知っている必要がありますので、あなたは、各行の高さを知る必要があるということです。また、これは一度にすべての行を作成しますので、あなたは、ビュー・リサイクル機能を利用することができません。

あなたが先に時間の高さを計算する簡単な方法を持っていない場合、あなたはListViewをオーバーライドし、それを独自の高さの仕様を与えることによって、あなたのためにそれをやってにonMeasureをだますことができます:

// Calculate height of the entire list by providing a very large 
// height hint.  But do not use the highest 2 bits of this integer; 
//  those are reserved for the MeasureSpec mode.
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top