// Temp is the root view that was found in the xml
final View temp = createViewFromTag(root, name, attrs, false); ViewGroup.LayoutParams params = null; if (root != null) {
if (DEBUG) {
System.out.println("Creating params from root: " +
root);
}
// Create layout params that match root, if supplied
params = root.generateLayoutParams(attrs);
if (!attachToRoot) {
// Set the layout params for temp if we are not
// attaching. (If we are, we use addView, below)
temp.setLayoutParams(params);
}
}

从上面可以看到,如果在inflate xml文件时,如果没有指定parent的时候,layout_width是不会生效的。

mInflater.inflate(R.layout.apps_listview_item, parent, false);

<com.helen.launcher4.TestLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="160dp"
android:orientation="horizontal"
android:paddingTop="5dp"
android:paddingBottom="5dp">

上面的160dp,如果没有指定parent,是不会生效。

当然这里的parent其实就只有一个目的,使layoutparam生效,其他毫无目的,所以随便指定一个view即可,这里android设计的不太好。

如果没有指定parent,layoutparam默认值是什么呢?

Listview是设计成一个可以上下滚动的viewgroup,所以width是占ListView所有的宽度,即MeasureSpec.EXACTLY

height呢?高度是MeasureSpec.UNSPECIFIED, size = 0.

也就是说,高度是随意定的。这会带来一个问题,当子节点使用match_parent的时候,子节点并不知道parent有多少高度,所以子节点的MeasureSpec会是UNSPECIFIED。

GridView在处理UNSPECIFIED的时候,很奇怪,并不是wrap_content。到底怎么处理,下面的文章再来细述。

ListView的LayoutParams设置的更多相关文章

  1. Android为ListView的Item设置不同的布局

    MainActivity如下: package cc.testlistview; import java.util.ArrayList; import java.util.HashMap; impor ...

  2. WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画

    原文:WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画 利用WPF的ListView控件实现类似于Winform中DataGrid行背景色交替变换的效果,同 ...

  3. 实现ScrollView中包含ListView,动态设置ListView的高度

    ScrollView 中包含 ListView 的问题 : ScrollView和ListView会冲突,会导致ListView显示不全 <?xml version="1.0" ...

  4. Android 中关于ListView分割线的设置

    今天发现许多App上的listview的item之间的分割线都只显示了右边一部分,而左边的那一半则没有,第一反应则是给分割线设置一张背景图片就ok了: android:divider="@m ...

  5. Android ListView与ExpandableListView设置分割线divider

    listview设置分割线需要以下操作: lv.setDivider(getResources().getDrawable(R.drawable.diyline)); ExpandableListVi ...

  6. 【问题汇总】ListView的FooterView设置可见性的问题

    ListView的FooterView一般用来给用户展示一些提示信息. 正常情况下,是这么使用的.代码例如以下: // footer footerLayout = new PullLoadingLay ...

  7. ListView 行高设置不起作用

    通常我们在自定义listview的时候会遇到这个问题,我们设置了每行的layout的高度,但是没起作用,那是因为在adapter里面getview的时候出的问题,通常我们写: view = mInfl ...

  8. android中LayoutParams设置参数的理解

    1. 有这样的一个应用场景:有一个linearLayout控件在其中布局一个textView控件 首先,创建线性布局对象 LinearLayout layout = new LinearLayout( ...

  9. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

随机推荐

  1. 几种常用的JS类定义方法

    几种常用的JS类定义方法   // 方法1 对象直接量var obj1 = {    v1 : "",    get_v1 : function() {        return ...

  2. JQuery+Ajax制作省市联动

    $(document).ready(function () { $("#Province").append("<option value=''>" ...

  3. 淘宝玉伯引发Web前后端研发模式讨论

    淘宝玉伯是是前端基础类库 Arale 的创始人,Arale 基于 SeaJS 和 jQuery.不久前,淘宝玉伯在 Github 的 Arale 讨论页面上抛出了自己对于Web 前后端研发模式的思考. ...

  4. android-数据存储之外部file存储(sdcard)

    一.基础概要 1.说明: 1>应用程序运行用到的数据文件可以保存到sd卡中 2>文件类型:任意 3>数据保存路径: 路径1:/storage/sdcard/Android/data/ ...

  5. Hadoop_HDFS HA 及解决方案

    1. HDFS系统架构 HDFS(Hadoop Distributed File System),及Hadoop分布式文件系统 作用: 为Hadoop分布式计算框架提供高性能,高可靠,高可扩展的存储服 ...

  6. scala 代码随笔

    def myfunc[T](iter: Iterator[T]) : Iterator[(T, T)] = { var res = List[(T, T)]() var pre = iter.next ...

  7. db2数据库新手可能碰到的问题及详解(部分内容来自网络搜索)

    一.db2安装好之后出现乱码,菜单栏呈现方框状,此时选择菜单第五项,点击选择下拉菜单中的最后一项,打开选择标签卡的第三项(字体),如果是无衬线都改为有衬线,如果是有衬线改为无衬线.乱码即可解决(网上一 ...

  8. Maven下载安装

    1.maven下载地址 https://maven.apache.org/配置:M2_HOME D:\tool\mvn\apache-maven-3.3.9 PATH %M2_HOME%/bin3.命 ...

  9. String-原型属性(练习)

    1.js部分/* *字符串新功能,添加一个字符串转成数组. *返回一个数组 */String.prototype.toCharArray = function(){ //定义一个数组 var chs ...

  10. <script>元素的位置

    脚本元素会组织下载网页内容,浏览器可以同时下载多个组件,但一旦遇到一个外部脚本文本后,浏览器会停止进一步下载,知道这个脚本文件下载,解析并执行完毕.这会严重影响网页载入的总时间,特别是在网页在入时会发 ...