滑動listview隱藏和顯示頂部布局


需求:

1.listview向下滑動時,隱藏頂部布局

2.listview向上滑動到最上面,顯示頂部布局

3.頂部布局的隱藏和顯示有過渡效果

4.第一次加載listview時,頂部不要隱藏

布局:

注意:android:animateLayoutChanges="true"添加在需要隱藏顯示布局的父布局中才能有過渡效果

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/personal_card_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true" android:descendantFocusability="blocksDescendants" tools:context="com.xuehu365.xuehu.ui.activity.PersonalCardActivity">

    <include android:id="@+id/title" layout="@layout/mine_title_layout" />

    <LinearLayout android:id="@+id/personal_card_information" android:layout_width="match_parent" android:layout_height="180dp" android:layout_below="@id/title" android:gravity="center_horizontal" android:orientation="vertical">

        <com.xuehu365.xuehu.ui.widget.CircleImageView android:id="@+id/personal_card_image" android:layout_width="78dp" android:layout_height="78dp" android:layout_marginTop="23dp" android:src="@mipmap/bg_touxiang" />

        <TextView android:id="@+id/personal_card_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="9dp" android:textColor="@color/my_font" android:textSize="16sp" />

        <TextView android:id="@+id/personal_card_company" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:textColor="@color/my_gray_font" android:textSize="14sp" />

        <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="23dp" android:layout_marginTop="5dp" android:orientation="horizontal">

            <TextView android:id="@+id/personal_card_department" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/my_gray_font" android:textSize="14sp" />

            <TextView android:id="@+id/personal_card_between" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="-" android:textColor="@color/my_gray_font" android:textSize="14sp" android:visibility="gone" />

            <TextView android:id="@+id/personal_card_duty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/my_gray_font" android:textSize="14sp" />

        </LinearLayout>
    </LinearLayout>

    <LinearLayout android:id="@+id/personal_card_tabs" android:layout_width="match_parent" android:layout_height="43dp" android:layout_below="@id/personal_card_information" android:background="@color/white" android:orientation="horizontal">

        <RelativeLayout android:id="@+id/personal_share_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

            <TextView android:id="@+id/personal_share" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="看過的直播" android:textColor="@color/my_gray_font" android:textSize="18sp" />

            <View android:id="@+id/personal_share_line" android:layout_width="match_parent" android:layout_height="3dp" android:layout_alignParentBottom="true" android:background="@color/my_blue" />
        </RelativeLayout>


        <RelativeLayout android:id="@+id/personal_community_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical">

            <TextView android:id="@+id/personal_community" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="加入的社群" android:textColor="@color/my_gray_font" android:textSize="18sp" />

            <View android:id="@+id/personal_community_line" android:layout_width="match_parent" android:layout_height="3dp" android:layout_alignParentBottom="true" android:background="@color/white" />
        </RelativeLayout>
    </LinearLayout>

    <android.support.v4.view.ViewPager android:id="@+id/personal_card_vp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/personal_card_tabs" android:descendantFocusability="blocksDescendants"></android.support.v4.view.ViewPager>
</RelativeLayout>

代碼

private int oldIndex; private int newIndex; private boolean isFirstScroll; //列表滑動監聽隱藏信息布局
personal_card_lv.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case SCROLL_STATE_TOUCH_SCROLL: oldIndex = view.getLastVisiblePosition(); break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { newIndex = view.getLastVisiblePosition(); LogHelp.i("scroll", "newIndex:" + newIndex + "--oldIndex:" + oldIndex); //往下滑
        if (newIndex > oldIndex && firstVisibleItem > 0) { isFirstScroll = true; ((PersonalCardActivity) getActivity()).personal_card_information.setVisibility(View.GONE); } else if (firstVisibleItem == 0 && isFirstScroll == true) { //往上滑
 ((PersonalCardActivity) getActivity()).personal_card_information.setVisibility(View.VISIBLE); } } });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM