android的listview分组显示的时候layout_marginTop失效的解决办法

在使用android的ListView组件做类似于通讯录这样的功能时,需要根据A、B、C这样的标题来区来分组显示通讯录中的姓名,本人在做实验过程中遇到了这样一个问题,比如,想让标题item和上边的用户名item中间有个间隙,而组(同个标题下)用户名之间不能有间隙,原本以为很简单,我认为在标题item的最外层LinearLayout中增加一个layout_marginTop属性即可,结果发现一只无效,最后请教了个高手告诉我需要在标题item的顶层LinearLayout中再嵌套一层,然后在第二层中设置这个属性才会有效,最后一试用,果然好了。

ListView分组显示的代码网上浩如烟海,这里只贴出关键的ListView的的两种item的代码如下:

标题item的layout,标红的就是嵌入的第二层:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical">

<!-- 必须再嵌套一层LinearLayout,否则layout_marginTop失效 -->

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#EDEDED"

android:layout_marginTop="15dip"

android:orientation="horizontal" >

<TextView

android:id="@+id/shopName"

android:layout_width="match_parent"

android:layout_height="40dip"

android:minHeight="30dip"

ndroid:gravity="center_vertical"

/>

</LinearLayout>

</LinearLayout>

姓名的item的layout:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#FFFFFF"

android:orientation="vertical" >

<TextView

android:id="@+id/goodName"

android:layout_width = "match_parent"

android:layout_height = "match_parent"

android:minHeight = "30dip"

android:gravity = "center_vertical"

android:paddingLeft = "10dip"

/>

</LinearLayout>

最后的效果如图,中间粉红色的间距就是想要的效果:

   

原本以为Android开发很简单,就平时利用业务时间玩玩,没想到里边的细节门道很多,看来我又自以为是了,哈哈哈!

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

时间: 2025-01-03 16:34:29

android的listview分组显示的时候layout_marginTop失效的解决办法的相关文章

android中的textview显示汉字不能自动换行的一个解决办法

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:shrinkColumns="0" > <TableRow android:layout_width=&qu

【Android】listview无法显示

1,自定义了adapter,但是界面无显示,控制台可以看的有数据从网络端返回:  -- 与后台无关: 2,json解析出list的长度大于0 -- 与解析无关: 3,在adapter中getcount();getView();并未执行,但是adapter的构造方法是执行了的:  -- 定位问题在listview.setAdapter(adapter);方法上. 4,看listview,在初始化的时候,findviewbyid定位的R.id是其他布局中的listview,而不是本布局的listvi

Android 设置ListView当前显示的item

项目中可能会有这种需求:动态设置ListView显示的item 这种需求可能会出现在不同的情况下,有的是打开页面就要显示在特定的位置,也有的是浏览列表时实时更新数据并且改变了集合中数据,或者是某种条件触发而改变显示的位置,我遇到的就是第二种. 先说说我的情况: 用ListView展示数据,当上拉或下拉刷新时会增加集合中数据的数量,但是考虑如果item太多可能会太占资源,于是我就控制了一下集合的长度,每次刷新后如果size超过最大值时我就会从集合中移除一部分数据,但是当我在刷新adapter时问题

android listview 异步加载图片并防止错位 解决办法

网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertView 但没有异步操作也不会有问题. 我简单分析一下: 当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView. 当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8 创建新的 view 实例, Ite

wm命令使用方法及LCD显示图标大小不正常时解决办法

注:Android 4.3引入的wm工具 wm命令及用法: 系统说明: usage: wm [subcommand] [options] wm size [reset|WxH] wm density [reset|DENSITY] wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM] wm size: return or override display size. wm density: override display density. wm overscan:

Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1 import android.view.View.OnClickListener; 2 import android.content.DialogInterface.OnClickListener; 其实,当我们用某个Listener时,不一定就要import它,直接用全名去定义就不需要import了,例如 1 mButton1.setOnClickListener(new OnClickListener() 2 { 3 4 @O

uploadify不能正确显示中文的按钮文本的解决办法

uploadify 目前不能正确显示中文的按钮文本. 我发现bug的原因是uploadify错误的使用了 js 的 escape 和 flash 的 unescape配对,而这2个是不兼容的.正确的转码传递参数应该用 encodeURI/decodeURI 配对,这2个函数的行为在js和flash里是相同的.其他地方的escape/unescape也应该替换掉,下面只修改影响按钮文本的部分.1. jquery.uploadify.v2.1.4.js 70行 将if (settings.butto

LYNC客户端不显示通讯组里的用户的解决办法。

LYNC客户端不显示通讯组里的用户的解决办法 错误图如下: 解决办法:ISA代理服务器的问题,把代理服务器高级里加上lync服务器的名字就可以了.

android - Lint Error Checking导致的无法打包问题的解决办法

Export aborted because fatal lint errors were found.These are listed in the Problems view.Either fix these before running Export again,or turn off "Run full error check when exporting app" in the Android > Lint Error checking preference page.