XListView headerView

XListVIew中headrView根布局必须是Linearlayout,并设置gravity="bottom" , 这样下拉时才会有被拉出来的效果,

根布局是其他布局时里面的控件大小等可能会跟随根布局大小动态改变,没有被拉出来的效果

ps:XListView实现原理:

继承自Listview,重写OnTouchEvent事件来处理手指滑动,当手指按下时记录按下的竖直方向绝对位置  (getRawY),

手指移动时再次获取绝对位置,与前一次绝对位置差值即为headerView要改变的高度,通过设置headerView的LayoutParameter来动态改变高度

当手指抬起时,使用Scroll滚动

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:id="@+id/ccc"
    android:gravity="bottom" >

    <RelativeLayout
        android:id="@+id/xlistview_header_content"
        android:layout_width="fill_parent"
        android:layout_height="60dp" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:orientation="vertical" android:id="@+id/xlistview_header_text">

            <TextView
                android:id="@+id/xlistview_header_hint_textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=" w_header_hint_normal" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="3dp" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=" iew_header_last_time"
                    android:textSize="12sp"
                    android:visibility="gone" />

                <ImageView
                   android:src="@drawable/ic_launcher"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:textSize="12sp" />
            </LinearLayout>
        </LinearLayout>

        <ImageView
            android:id="@+id/xlistview_header_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@id/xlistview_header_text"
            android:layout_centerVertical="true"
            android:layout_marginLeft="-35dp"
             />

        <ProgressBar
            android:id="@+id/xlistview_header_progressbar"

            android:layout_width="26dp"
            android:layout_height="130dp"
            android:layout_marginTop="15dp"
            android:layout_alignLeft="@id/xlistview_header_text"
            android:layout_centerVertical="true"
            android:layout_marginLeft="-35dp"
            android:visibility="invisible" />
    </RelativeLayout>

</LinearLayout>
public class MainActivity extends Activity {

	@SuppressLint("NewApi") @Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final ViewGroup group=(ViewGroup) findViewById(R.id.ccc);

		ViewGroup.LayoutParams layoutParams=group.getLayoutParams();
		layoutParams.height=0;
		group.setLayoutParams(layoutParams);

		ObjectAnimator animator=ObjectAnimator.ofInt(group, "", 0,100);
		animator.setDuration(8000);
		animator.addUpdateListener(new AnimatorUpdateListener() {

			@Override
			public void onAnimationUpdate(ValueAnimator animation) {
				// TODO Auto-generated method stub
				Integer i=(Integer) animation.getAnimatedValue();
				ViewGroup.LayoutParams layoutParams=group.getLayoutParams();
				layoutParams.height=i;
				group.setLayoutParams(layoutParams);

			}
		});

		animator.start();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-17 16:46:00

XListView headerView的相关文章

下拉刷新XListView的简单分析

依照这篇博文里的思路分析和理解的 先要理解Scroller,看过的博文: http://ipjmc.iteye.com/blog/1615828 http://blog.csdn.net/wangjinyu501/article/details/32339379 还要理解View的touch时间传递: http://www.codekk.com/open-source-project-analysis/detail/Android/Trinea/%E5%85%AC%E5%85%B1%E6%8A%

支持下拉刷新和上划加载更多的自定义RecyclerView(仿XListView效果)

首先看效果 下拉刷新:        上划加载        在项目更新的过程中,遇到了一个将XListView换成recyclerView的需求,而且更换完之后大体效果不能变,但是对于下拉刷新这样的效果,谷歌给出的解决方案是把RecyclerView放在一个SwipeRefreshLayout中,但是这样其实是拉下一个小圆形控件实现的,和XListView的header效果不同.在网上找了很多的别人代码,都没有实现我想要的效果,于是自己动手写了一个. 具体实现的效果有以下几条 下拉刷新功能:

【Android界面实现】XListView实现原理讲解及分析

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 XListview是一个非常受欢迎的下拉刷新控件,但是已经停止维护了.之前写过一篇XListview的使用介绍,用起来非常简单,这两天放假无聊,研究了下XListview的实现原理,学到了很多,今天分享给大家. 提前声明,为了让代码更好的理解,我对代码进行了部分删减和重构,如果大家想看原版代码,请去github自行下载. Xlistview项目主要是三部分:XlistView,XListViewHeade

XListview

需要导入library //找控件        xlv = (XListView) findViewById(R.id.xlv);        xlv.setPullRefreshEnable(true);        xlv.setPullLoadEnable(true);        //设置刷新监听        xlv.setXListViewListener(new XListView.IXListViewListener() {            @Override   

ListView 添加 HeaderView常见错误

1.addHeaderView异常: 最近在做通讯录开发时使用ListView,发现一个奇怪的问题:当添加一个ImageView 作为HeaderView时,发现ImageView长宽始终是1:1的大小,即调用 ListView.addHeaderView(mImageView) 之后mImageView尺寸布局被忽略.具体代码如下: list_view_header_layout.xml <?xml version="1.0" encoding="utf-8"

给tableView设置headerView时遇到的问题

在ViewDidLoad里面设置了 self.tableView.tableHeaderView = 自定义的View 然后在模拟器上运行后,发现这个HeaderView挡住了后面的Cell,也就是cell的第0行不是接在HeaderView的下面 解决方法: 另外再用代码创建一个view1,将处定义的view添加到这个view1上,然后再self.tableView.tableHeaderView = view1

关于ListView的HeaderView

1. 可点击/不可点击 private void addHeaderView(){ View headerView = this.mInflater.inflate(R.layout.XXX_header_info, this.listView, false); this.headerInfo = (TextView) headerView.findViewById(R.id.XXX_HeaderInfo); //this.listView.addHeaderView(headerView);

iOS 解决tableView中headerView头部视图不跟随tableView滑动的方法

解决方法如下: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.5px Menlo; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.5px Menlo; color: #4f8187 } span.s1 { color: #ba2da2 } span.s2 { } span.s3 { color: #703daa } span.s4 { color: #272a

UItableView自定义标题(headerView)重用问题

在实现类似QQ列表的功能时,这样自定义了一个标题headerView 1 在实现类似QQ列表的功能时,这样自定义了一个标题headerView 2 3 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 4 { 5 6 static NSString *HeaderIdentifier = @"header"; 7 8 headerView = [tableVi