ユーザーがリストビューを上にスクロールするとトップバーを非表示にし、ユーザーが下にスクロールするとすぐに再び表示されるようにしたい. 下にスクロールするとGoogle Plusの下部メニューが表示され、上にスクロールするとすぐに表示されるのと同じです。最初に表示されるアイテムを提供するスクロールを試しました。しかし、リストビューアイテムを完全にスクロールして前の最初の表示アイテムを取得する必要があるため、役に立ちません。誰か助けてください私はこの問題でひどく立ち往生しています。
6133 次
1 に答える
0
考えられる解決策は、ListView の下に View (textView または ImageView を含むレイアウト) を追加することです。
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</ListView>
<LinearLayout
android:id="@+id/viewid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0" />
重みは、両方のコンポーネントを表示するために重要です。その後、listView の onScrollListener を実装します。
setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//get the showed item num, and if its equal to total, you can hide the view
//get a reference to your viewid
viewid.setVisibility(View.GONE);
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
最後の行に到達したら、一番下の View に setVisibility(View.GONE) を設定します。ユーザーが上にスクロールしたときにこのビューを再度表示する場合は、コードを変更します。もちろん、別のレイアウト、textView などを使用できます。
アップデート
レイアウトを少し試してみましたが、レイアウト ファイルには別の解決策があります。ここでは、一番下のビューが listView をオーバーレイしているため、この textView の削除はスムーズです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:background="#ffffff"
android:layout_alignParentBottom="true"
android:text="..." />
</RelativeLayout>
詳細はこちら
于 2013-10-08T06:55:05.633 に答える