2 u012784504 u012784504 于 2016.02.18 15:08 提问

android listview的headview

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

4个回答

u012784504
u012784504   2016.02.19 16:51
已采纳

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

wufeng55
wufeng55   2016.02.18 15:25

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

u012784504
u012784504 直接用他写的listview
接近 2 年之前 回复
u012784504
u012784504 宽度都是matchparent,怎么只显示了一半呢
接近 2 年之前 回复
u012784504
u012784504 // 将下拉刷新的布局加入ListView的顶部 addHeaderView(headerView, null, false);
接近 2 年之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.18 22:13

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

u012784504
u012784504 我直接把他的拷过来用,自己测试可以,放在公司项目那就不行了,只显示了一半。。
接近 2 年之前 回复
u012784504
u012784504 代码在下面
接近 2 年之前 回复
u012784504
u012784504   2016.02.19 11: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);
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!