u012784504
侧耳_倾听
采纳率40%
2016-02-18 07:08 阅读 1.5k

android listview的headview

图片说明
图片说明
用别人的headview,为什么我的headview只显示了一半。。是不是哪里设置问题

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    u012784504 侧耳_倾听 2016-02-19 08:51

    解决了,listview的布局有个地方用了wrap_content,换成match_parent就好了

    点赞 评论 复制链接分享
  • wufeng55 code小生 2016-02-18 07:25

    明显是布局出了问题,改一下图片的伸缩方式就可以了

    点赞 评论 复制链接分享
  • Mr_dsw Andoter 2016-02-18 14:13

    你的布局拿出来看看,可能是高度设置有问题

    点赞 评论 复制链接分享
  • u012784504 侧耳_倾听 2016-02-19 03:08
     <?xml version="1.0" encoding="utf-8"?>
    <!-- ListView的头部 -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:background="@color/aaa" >
    
        <!-- 内容 -->
    
        <RelativeLayout
            android:id="@+id/head_contentLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="30dp" >
    
            <!-- 箭头图像、进度条 -->
    
            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true" >
    
                <!-- 箭头 -->
    
                <ImageView
                    android:id="@+id/lvHeaderArrowIv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:scaleType="centerInside"
                    android:src="@mipmap/arrow" />
    
                <!-- 进度条 -->
    
                <ProgressBar
                    android:id="@+id/lvHeaderProgressBar"
                    style="?android:attr/progressBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:visibility="gone" />
            </FrameLayout>
    
            <!-- 提示、最近更新 -->
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:orientation="vertical" >
    
                <!-- 提示 -->
    
                <TextView
                    android:id="@+id/lvHeaderTipsTv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="下拉刷新"
                    android:textColor="@color/black"
                    android:textSize="20sp" />
    
                <!-- 最近更新 -->
    
                <TextView
                    android:id="@+id/lvHeaderLastUpdatedTv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="上次更新"
                    android:textColor="@android:color/darker_gray"
                    android:textSize="10sp" />
            </LinearLayout>
        </RelativeLayout>
    
    </LinearLayout>
    

    java

      private void init(Context context) {
            //底部加载更多
           // initBottomView(context);
            setCacheColorHint(context.getResources().getColor(R.color.colorPrimary));
            inflater = LayoutInflater.from(context);
            headerView = (LinearLayout) inflater.inflate(R.layout.lv_header, null);
            lvHeaderTipsTv = (TextView) headerView.findViewById(R.id.lvHeaderTipsTv);
            lvHeaderLastUpdatedTv = (TextView) headerView.findViewById(R.id.lvHeaderLastUpdatedTv);
            lvHeaderArrowIv = (ImageView) headerView.findViewById(R.id.lvHeaderArrowIv);
            // 设置下拉刷新图标的最小高度和宽度
            lvHeaderArrowIv.setMinimumWidth(70);
            lvHeaderArrowIv.setMinimumHeight(50);
    
            lvHeaderProgressBar = (ProgressBar) headerView.findViewById(R.id.lvHeaderProgressBar);
            measureView(headerView);
            headerContentHeight = headerView.getMeasuredHeight();
            // 设置内边距,正好距离顶部为一个负的整个布局的高度,正好把头部隐藏
            headerView.setPadding(0, -1 * headerContentHeight, 0, 0);
            // 重绘一下
            headerView.invalidate();
            // 将下拉刷新的布局加入ListView的顶部
            addHeaderView(headerView, null, false);
            // 设置滚动监听事件
            setOnScrollListener(this);
    
      private void measureView(View child) {
            ViewGroup.LayoutParams params = child.getLayoutParams();
            if (params == null) {
                params = new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.FILL_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
            }
            int childWidthSpec = ViewGroup.getChildMeasureSpec(0, 0 + 0,
                    params.width);
            int lpHeight = params.height;
            int childHeightSpec;
            if (lpHeight > 0) {
                childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight,
                        MeasureSpec.EXACTLY);
            } else {
                childHeightSpec = MeasureSpec.makeMeasureSpec(0,
                        MeasureSpec.UNSPECIFIED);
            }
            child.measure(childWidthSpec, childHeightSpec);
        }
    
    点赞 评论 复制链接分享

相关推荐