滑动listview显示与隐藏标题栏

xiaoxiao2021-02-28  25

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true" tools:context="nativesample.videolan.org.listview.MainActivity"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout> import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends AppCompatActivity { private int itemHeight; private ListView listView; private String data[] = {"apple", "banner", "pear", "kiwi", "orange", "Mango", "Strawberry", "watermelon", "pear", "grape", "pineapple", "apple", "banner", "pear", "kiwi", "orange", "Mango", "Strawberry", "watermelon", "pear", "grape", "pineapple", "apple", "banner", "pear", "kiwi", "orange", "Mango", "Strawberry", "watermelon", "pear", "grape", "pineapple",}; ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); itemHeight = 0; ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data); listView = (ListView) findViewById(R.id.listview); listView.setAdapter(adapter); listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem == 0) { View firstVisibleItemView = listView.getChildAt(0); if (firstVisibleItemView != null && firstVisibleItemView.getTop() == 0) { Log.d("ListView", "##### 滚动到顶部 #####"); getSupportActionBar().show(); } }else if ((firstVisibleItem + visibleItemCount) == totalItemCount) { View lastVisibleItemView = listView.getChildAt(listView.getChildCount() - 1); if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == listView.getHeight()) { Log.d("ListView", "##### 滚动到底部 ######"); } } // 当开始滑动且ListView底部的Y轴点超出屏幕最大范围时,显示或隐藏底部按钮 View c = view.getChildAt(0); if (c == null) { return; } if (itemHeight < c.getHeight()) { itemHeight = c.getHeight(); } int height = (firstVisibleItem + visibleItemCount - 1) * itemHeight; if (height >= ScreenUtils.getScreenHeight(MainActivity.this)) { //下滑操作 getSupportActionBar().hide(); }else {//上滑操作 } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } }); } /** * 获得屏幕高度 * * @param context * @return */ public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels; } }

转载请注明原文地址: https://www.6miu.com/read-2629584.html

最新回复(0)