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あなたが望むように物事をレンダリングする独自のものを書くことです。