1

あなた が言う前に「グーグルはこれをしないように言っている」私の 質問をすべて読んでください!

レイアウト:

ScrollView -> RelativeLayout -> ScrollView -> RelativeLayout

最初のScrollViewが必要なのは、フォームエントリが一部の電話のソフトキーボードを引き上げて、残りのコンテンツを非表示にするためです。ScrollViewを最も外側のコンテナとして使用すると、ユーザーはソフトキーボードが存在する状態でスクロールできます。

階層の下位にある2番目のScrollViewは、引き続きスクロール可能なListViewです。

開発者が別のScrollView内にScrollViewを持つことを推奨されない理由を完全に理解しています。2つを連携させる方法を見つける必要があります。最も内側のScrollViewがタッチされたときに、最も外側のScrollViewを無効にしようとしましたが、それは役に立ちませんでした。

両方が機能する場所にこれを回避する方法はありますか(もちろん同時にではありません)?コンテンツページが再び変更されるまで、最も外側のScrollViewを無効にしてもかまいません。方法がなければなりません。

4

3 に答える 3

4

ステップ1:を削除しScrollViewます。

ステップ2:最初のをviaRelativeLayoutのヘッダーにします。ListViewaddHeaderView()

ステップ3:2番目をviaRelativeLayoutのフッターにします。ListViewaddFooterView()

正味の効果は、ネストされたスクロール可能なアイテムなしで、すべてがスクロール可能になることです。

于 2012-09-20T16:52:56.107 に答える
0

これは、android:layout_heightを2番目のScrollViewの固定値に設定した場合にのみ機能します。最善の方法は、デバイスに応じてサイズを設定することです。そのため、サポートされている画面サイズごとにレイアウトを作成することをお勧めします(150 dpなどのdpの値)。別のレイアウトを作成する必要があります:layout-small、layout-normal、layout-large ....固定サイズの最適化については、次のリンクを参照してください:http: //developer.android.com/guide/practices/screens_support.html

于 2012-09-20T16:52:40.197 に答える
0

答えは、最も外側のスクロールビューからのタッチイベントをプログラムでインターセプトすることです。ScrollViewをプログラムで無効にすることについて別のSOFで見つけたクラスを使用しています。

于 2012-09-26T17:00:05.427 に答える