zoukankan      html  css  js  c++  java
  • 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"?>  
    <ImageView xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:scaleType="fitCenter"  
        android:src="@drawable/ruanjianguanli_banner" >  
    </ImageView>  
    

    java

    mImageView = (ImageView)LayoutInflater.from(mContext).inflate(R.layout.list_view_header_layout, null);  
    mListView.addHeaderView(mImageView); 
    

    上面的调用方式会使XML布局中ImageView的LayoutParam丢失,调用 ListView.addHeaderView(mImageView) 之后mImageView尺寸布局被忽略

    修改为如下方式调用,则不会丢失LayoutParam

    mImageView = (ImageView)LayoutInflater.from(mContext).inflate(R.layout.list_view_header_layout, mListView, false);  
    mListView.addHeaderView(mImageView);  
    

     

    2.LayoutInflater的inflate()函数的用法:

    View view = inflate(int resource, ViewGroup root, boolean attachToRoot)   
    resource:布局文件ID   
    root:父ViewGroup对象,   
    attachToRoot:是否将“渲染”出来的View添加到上面的root中   
    

    root和attachToRoot是共同作用的: 
    1,有root,同时attachToRoot为false,那么inflate()返回的就是“翻译”得到的view 
    2,有root,同时attachToRoot为true,那么inflate()就是将“翻译”得到的view添加到root后,然后返回root 
    3,无root,同时attachToRoot为false,那么inflate()返回的就是“翻译”得到的view
    4,无root,同时attachToRoot为true,报错

    root还有一个重要的作用就是为“渲染”得到的view添加合适的LayoutParam,并且如果并不想将得到的View添加到root的话

    1. View view = mLayoutInflater.inflate(R.layout.header, new ListView(mContext), false);  
    2. View view = mLayoutInflater.inflate(R.layout.header, new LinearLayout(mContext), false);  
    3. View view = mLayoutInflater.inflate(R.layout.header, new RelativeLayout(mContext), false);  
    

    上面得到的View,除了view的LayoutParam分别为AbsListView.LayoutParams,LinearLayout.LayoutParams,RelativeLayout.LayoutParams之外,内容都一致。  

      

     

      

  • 相关阅读:
    Know more about RAC statistics and wait event
    再谈指针
    Manageing Undo Data
    SQL基础内容
    JavaScript高级程序设计(3版)笔记分享( ES5特性)
    HTML5布局篇( 总结 )
    温习 SQL 01(Z)
    Makefile
    SQLPLUS工具简介
    链接相关 & 预处理
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6533569.html
Copyright © 2011-2022 走看看