14

画面からスクロールするListViewに多くの要素があります。

ビューの最後に空白が欲しいです。つまり、ユーザーは、最後の要素がビューポートの中央にくるように、最後の要素を越えてスクロールできる必要があります。

OverScrollerを使用することもできますが、それでは、iPhone でよく見られるように View が弾む効果しか得られないと思います。

私が見落としている可能性のあるものはありますか?

ボタンまでスクロールした画面は次のようになります。 最後のラベルが画面の中央近くにある多数のラベルがある Android モックアップ

4

5 に答える 5

46

受け入れられた答えは複雑すぎるため、 addFooterView はこの種のものではありません。適切で簡単な方法は、paddingTop と paddingBottom を設定することです。clipToPadding を「false」に設定する必要があります。リスト ビューまたはグリッド ビューで、次を追加します。

    android:paddingTop="100dp"
    android:paddingBottom="100dp"
    android:clipToPadding="false"

指のスクロールで移動する上部と下部に空白スペースができます。

于 2014-02-18T01:39:28.637 に答える
15
  1. 選択した任意のレイアウトをインフレートします (これは、ドローアブルがなく、選択した高さと幅が設定された XML と ImageView である可能性があります)
  2. 画面の高さを測定し、新しい LayoutParams を作成し、その高さを画面の高さの 1/2 に設定します
  3. 膨張したビューに新しいレイアウト パラメータを設定します
  4. ListView のaddFooterView()メソッドを使用して、そのビューをリストの一番下に追加します ( もありますaddHeaderView()) 。

画面の高さを測定するコード

 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
 Display display = wm.getDefaultDisplay();
 int screenHeight = display.getHeight();

画面の半分の高さを設定するコード:

 View layout = inflater.inflate(R.layout.mylistviewfooter, container, false);
 ViewGroup.LayoutParams lp = layout.getLayoutParams();
 lp.height = screenHeight/2;
 layout.setLayoutParams(lp);
 myListView.addFooterView(layout);

余談: リストビューにフッターまたはヘッダー ビューを追加する場合は、アダプターを追加する前に行う必要があります。また、これを行った後にアダプタークラスを取得する必要がある場合は、リストビューのアダプターを呼び出すと、 getWrappedAdapterメソッドを呼び出す必要があるHeaderViewListAdaptergetAdapter()のインスタンスが返されることを知っておく必要があります。

 MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter();
于 2012-11-13T18:14:07.877 に答える
-3

以下を試してください。

View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 )); 
// 100 is the height, you can change it.
mListView.addFooterView(footer, null, false);
于 2013-09-18T00:21:07.430 に答える