ListAdapterを使用できるようにする、アイテムの選択など、ListViewにいくつかの機能が必要ですが、ScrollViewの部分は必要ありません。その部分を自分で別の方法で実装したいと思います(なぜ、またはどのようにこれを行うかは、この質問のポイントではないので、「なぜ」と聞かないでください)。
ScrollViewにないListViewを作成したり、スクロールを無効にしたりする方法はありますか?
ListAdapterを使用できるようにする、アイテムの選択など、ListViewにいくつかの機能が必要ですが、ScrollViewの部分は必要ありません。その部分を自分で別の方法で実装したいと思います(なぜ、またはどのようにこれを行うかは、この質問のポイントではないので、「なぜ」と聞かないでください)。
ScrollViewにないListViewを作成したり、スクロールを無効にしたりする方法はありますか?
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);
AListView
はにありませんScrollView
。AListView
は本能的にスクロールします。単純なAPIのスクロールを無効にできるとは思いません。もしそうなら、あなたの選択は、サブクラスListView
化してスクロール動作をオーバーライドする方法を見つけようとするか、スクロール動作を複製ListView
して排除するか、またはAdapterView
あなたが望むように物事をレンダリングする独自のものを書くことです。