listview嵌套listview,子listview中有换行的textview展示有问题,肿么办?

ListView嵌套ListView,TextView有多行文本显示不全不问题 这是在网上找到的相关的解决方法,记录下来,方便以后查看。 关于ListView嵌套ListView,在网上找到的解决方法是调用自定义的方法动态计算listview的高度: public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listVie 阅读详情
        这些天遇到一个问题,就是我有个界面因为业务的需要,就必须做成listview嵌套listview,然后被嵌套的listview的Item里面有textview,刚开始也没什么,后来突然有条数据的字符串特别长,然后子listview的Item的textview就换行了,然后,然后你们懂得,子listview就显示异常了呀,内容就不能完全展示了。

        其实google也是不推荐可以滚动的控件里面再次嵌套可以滚动的控件的。可是,无奈产品的需求呀。不过,已经有大神解决了这种嵌套问题,一般是有两种解决方法,一是重写listview的onMeasure方法,另外一种是设置完listview的adapter,动态测量listview的高度,当然这种情况是要求listview的子条目最外层布局是linearlayout线性布局了。其实说这个也是为这个textview换行问题做铺垫了。我嵌套listview时候用的是 第一种方法就是自定义了listview。但是依然出现了这个问题,好的,那咱们换换第二种方式呢?结果依然悲剧,依然是有问题。然后就去看看网上大牛都是怎么解决的。其实,看了下最主要的就是有两种解决方式,一种是用重写onMeasure的listview的方式,但是我试了不好使。另外一种就是重写textview的onMeasure,就是去除padding以及drawablePadding后,算出每行的宽度,然后用measureText方法测试赋值给textview的字符串在屏幕上占据的总长度,然后两者相除得到行数,然后在用textview每行的高度*行数得到textview应有的宽高,看起来也的确是合情合理呀。可是我试了还是不好使的。哎,日子可该怎么过呀。

         既然试了都不好用。然后我就想用listview肯定是不行了。看来列表类的都不好用了。然后,然后我就用了linearlayout了。这也是万般无奈的做法,实属下下策。但是也的确是可以解决问题。算是一种临时性的解决方案吧。大家都知道线性布局,当它的orientation设置为vertical,然后它的子布局都一样,看起来会怎样?是不是也可以看做一个列表,虽然它不是。

        接下来看具体实施,因为我之前用的就是listview嵌套listview,所以如上面所说我将子listview换成了一个orientation为vertical的linearlayout了。原来的listview的adapter其实是可以复用的。它就是用来构造添加进linearlayout里面的子view的。看如下代码:

private void addView(){
        /**
         * 下面的ExampleBean是实体Bean,同样listTemp是给adapter的list集合了(我写的假数据)
         */
        List<ExampleBean> listTemp = new ArrayList<>();
        ExampleAdapter exampleAdapter = new ExampleAdapter(listTemp,context);
        //通过循环向linearlayout里面添加子view,相当于listview的Item了
        for(int i=0;i<exampleAdapter.getCount();i++){
            //通过adapter的getview方法获取子view
            View view = exampleAdapter.getView(i, null, null);
            //给子view设置margin属性(当然也可以有别的属性了)
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
            layoutParams.setMargins(0, DevUtils.dp2px(10),0,0);
            view.setLayoutParams(layoutParams);
            //给linearlayout的Item设置点击事件,模拟listview的onItemClickListener
            view.setOnClickListener(new MyOnClickListener(exampleAdapter.get(i),i));
            linearlayout.addView(view);
        }
    }

/**
     * 要给linearlayout添加的点击事件监听
     */
    private class MyOnClickListener implements View.OnClickListener{
        private ExampleBean exampleBean;
        private int currentPosition;
        //通过构造方法将需要的参数传递进来(可根据自己业务需要扩展)
        public MyOnClickListener(ExampleBean exampleBean,int position){
            this.exampleBean = exampleBean;
            this.position = position;
        }

        @Override
        public void onClick(View v) {
            //在这里写自己的业务跳转逻辑就好了
        }
    }
       是的,核心的代码就是如上的两个方法了。下面的MyOnClickListener就是给线性布局的每个Item添加的点击事件。这个也是我目前最可能遇到的业务场景了,就是Item的点击事件。如果是Item内部的事件,我们不需要做额外的处理了,交给adapter就好了。
       以上就是这次遇到问题的解决过程。当然这个只是一个临时性的解决方法,因为listview这个列表控件的Item的复用性肯定比linearlayout好很多。如果大家有什么好的点子,欢迎分享,多多指教。如果不对之处,欢迎指出。周末愉快。
Android TextView深度解析:从基础设置到高级适配与性能优化 在Android应用开发中,UI组件的正确使用是构建良好用户体验的基础。TextView作为最核心的文本显示控件,其内容、字体大小、颜色和背景的设置看似简单,实则涉及移动端开发的多个关键技术领域。理解其工作原理,需要掌握Android资源系统、屏幕适配机制和渲染性能优化等核心概念。通过资源化管理和主题化设计,开发者可以实现文本的国际化支持、深色主题适配以及动态样式切换,这对提升应用的可维护性和用户体验至关重要。在实际工程实践中,合理运用**sp与dp单位**进行字体适配,以及通过**ColorStateLi 阅读详情

相关推荐

listView实现文字编辑的自动换行

listView实现文字编辑的自动换行.

android listView实现文字编辑自动换行

程序很简单,编辑文字的时候设置每行的字数,超出字数之后自动换行,点击删除按钮可以退回到上一行。实现效果界面如下所示: 主要在WordTempletAdapter类里实现该功能,代码如下: public class WordTempletAdapter extends BaseAdapter{ private Activity mActivity; private int []wordI

guokehello的专栏 3253

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

自定义TextView,解决文字换行,\n换行符换行,导致高度计算不对问题(计算ListView高度)

刚遇到一个问题,如题,我有2个ListView嵌套,所以需要计算嵌套中的ListView高度,然后就发现,TextView 中的文字换行会导致高度计算有误,只算到一行,So,上网查解决方法,找到的方法都是一个public class myTextView extends TextView { private Context context; public myTextView(Contex

z609933542的博客 4090

vit的cam和注意力图: VIT模型的可解释性

VIT的热力图怎么画

YI_SHU_JIA的博客 1万+

Android 仿搜索历史记录,根据item内容自动换行,涉及动态添加布局

数据排列RecyclerView可以解决大部分问题,有一种情况:比如:商城的搜索历史记录,因为输入字符的长短不同,RecyclerView处理列数的时候,比较麻烦,如图: 解决方案:自定义View: /** * Created by Administrator on 2018/6/20. * 自动换行 */ public class WarpLinearLayout extend...

zuo_er_lyf的博客 3108

量子密钥分发系统的工程实践(四):FPGA在后处理中的核心实现与优化

本文深入探讨了FPGA在量子密钥分发(QKD)系统后处理中的核心实现与优化策略。文章详细拆解了FPGA如何高效完成原始密钥提取、误码协商和私密放大等关键任务,并分享了流水线设计、资源复用及存储器架构优化等工程实践“心法”,旨在解决高速、实时QKD系统中的性能瓶颈,提升密钥生成率。

t8u9v0的博客 388

ListView嵌套ListView实现论坛评论效果

开发过程中,根据需求需要做一个类似于百度贴吧APP中,论坛评论回复的效果。这个问题其实挺愁人的,它牵扯到如何是多级嵌套的listview都能正常显示。中间牵扯到的问题是: (1)、点击评论按钮,如何弹出软键盘评论框 (2)、ListView如何嵌套ListView显示 (3)、显示不开的TextView如何换到顶行显示,而不是简单的换行显示。 话不多说,先上图:

DoForMe_2014的专栏 2014

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

9.1 机器人动力学建模

目录9.1 机器人动力学建模一、机器人动力学的基本概念1. 什么是机器人动力学?2. 动力学方程二、机器人动力学建模方法1. 拉格朗日方法2. 牛顿-欧拉方法三、Simulink 中的机器人动力学建模1. 使用 Simscape Multibody 建模示例:构建一个两连杆机械臂的动力学模型。步骤:2. 使用 Robotics System Toolbox 建模示例:构建一个六自由度工业机器人的动力学模型。步骤:四、示例:两连杆机械臂的动力学建模目标:步骤:五、结果分析1. 动态响应2. 参数敏感性六、总结

xiaoheshang_123的博客 626

当ListView显示不全时,除了总体测量外还要测量TextView的高度

好,直接撸代码,这样更明了 1.关于总体测量 当使用ScrollView嵌套ListView的时候,如果不对ListView进行高度的测量,ListView也不知道自己到底有多长,所以ListView会显示不全的,这里先上总体测量ListView的方法(这种测量方式有很多中,这里就上一种了); public void setListViewHeight(ListView list

Nothing 1347

[Unity开发] [PICO]避坑指南:PICO商店上传APP时PXR Platform APPID设定详解

PICO开发者上传Unity应用时常见的"APPID不符"问题,主要源于混淆了开发者后台两个不同位置的APPID。

每日出拳老爷子的博客 555

使用Xlistview时TextView自动换行或ScrollView嵌套Listview高度显示不全

使用Xlistview时TextView自动换行或ScrollView嵌套Listview高度显示不全在最近的项目中用到ScrollView嵌套Listview。这样高度会显示不全。其实网上很多这个解决办法,只需在listview.setAdapter(adapter);后面添加一段代码 /* 动态设置ListView的高度 * @param listView

x158454996的博客 790

Cadence OrCAD Capture CIS元器件管理时ERROR(ORCIS-6454): Temporary part number tracking is turned on报错的解决方法

使用Part manager对工程的元器件进行批量管理时,出现如下图所示的ERROR(ORCIS-6454): Temporary part number tracking is turned on报错其解决方法如下。

fydar的博客 3501

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ScrollView中嵌套ListView的完美解决方案

在ScrollView中嵌套ListView的时候往往会出现滑动事件导致冲突而使ListView显示不全的问题,而这个问题网上百度会得到一个很普遍的答案,就是重新计算ListView的高度,然后再讲其高度重新赋值给ListView,下面贴出代码解决方案: /** * 动态设置ListView的高度 * @param listView */ public static void setListVi

倩倩的博客专属领地 678

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

自定义TextView,解决计算listView中item高度的时候,如果其中的TextView字数超过一行,只计算到一行高度的问题

动态计算listView中item 的高度时,如果其中textview超过一行,只会计算其中第一行的刚度,(双层listview嵌套使用时经常出现这种问题)。我们需要自定义textview,动态计算textView的高度,具体代码如下 package com.example.wisdomoperating.view; import android.app.Activity; import

myrssq的博客 3100

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ScrollView中嵌套ListView,TextView只显示一行的高度解决方案

这种情况下,TextView在OnMeasure中只测量了一行的高度,需要重新定义TextView package com.fyq.xueyou.widget; import android.app.Activity; import android.content.Context; import android.text.Layout; import android.util.A

Yelbosh的专栏 2902

解决ScrollView中嵌套ListView(本文为CornerListView)时显示异常的问题

  之前曾经就是做项目的时候,因为CornerListView的界面显示比较不错,所以经常用,但是突然发现嵌套在ScrollView中就会经常出现排布异常,很是苦恼的东西,两个不错的模块竟然无法存在,难道真的是“一山不容二货”,鱼与熊掌不可兼得?   没办法,还是都想要,所以就想办法了!   查资料,自己测试,终于有了解决方案! 首先看布局文件(不用变的): 1 &...

agnes9243的博客 187

ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法

文章来源:http://blog.youkuaiyun.com/spring_he/article/details/17409661 1、前言 从谷歌那里找到的ScrollView嵌套ListView只显示一行的解决办法相信很多人都遇到过,然后大部分都是用这位博主的办法解决的吧 刚开始我也是用这个办法解决的,首先感谢这位哥的大私奉献,贴上地址 http://blog.youkuaiyun.com/

bluebell_55的专栏 444

ScrollView 嵌套ListView 解决方案

方法一:重写ListView的onMeasure       public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {           int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOS

duominike的专栏 215

Android用户界面的设计方法心得,android ui界面设计的一些心得与问题解决

1.把Button或者ImageButton的背景设为透明或者半透明:半透明透明其他透明度:在RGB的值前面加上数字(100以内),如#90436EEE(RGB为436EEE),#50436EEE,根据值的大小呈现不同的显示效果,值越小透明度越高。2.设置btn.setBackgroundResource(R.drawable.comment_sel);btn.setTextColor(getRe...

weixin_39912250的博客 857

android对layout进行监听,android UI设计的一些心得与问题解决(无效果图)

1.把Button或者ImageButton的背景设为透明或者半透明:半透明透明其他透明度:在RGB的值前面加上数字(100以内),如#90436EEE(RGB为436EEE),#50436EEE,根据值的大小呈现不同的显示效果,值越小透明度越高。2.设置按钮背景图片或颜色:btn.setBackgroundResource(R.drawable.comment_sel);btn.setTextC...

weixin_39531992的博客 640

解决android 模糊查询语句,在取值显示的时候,一个Textview中只能显示一段数据问题的方法。

Cursor cursor=db.query(&amp;quot;job&amp;quot;,null,null,null,null,null,null); if(cursor.moveToFirst()){ do{ int id=cursor.getInt(cursor.getColumnIndex(&amp;quot;id&amp;quot;)).

monologuezjp的博客 489
上一篇: 让“提交”按钮状态跟随edittext以及checkbox等的状态实时变化
下一篇: 关于Eventbus使用过程中的一点点发现
和小胖
博客等级 码龄12年 8粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值