关于android textview 中英文混合分行错误问题

Android TextView视觉定制全解析:从核心属性到性能优化实战 在Android应用开发中,UI控件的视觉定制是构建良好用户体验的基础。TextView作为最核心的文本显示组件,其渲染机制涉及系统主题、资源配置与设备密度等多重因素。理解其工作原理,掌握内容、字体、颜色与背景四大属性的正确配置方法,是实现界面美观、性能高效的关键。通过资源文件管理字符串与颜色,使用sp单位适配字体大小,并利用ColorStateList与Shape Drawable处理状态与背景,不仅能提升开发效率,还能确保应用在不同设备与主题下的兼容性。本文聚焦TextView的深度定制,结合国际化、深 阅读详情

在中文英文混合时候textview 的分行就出现了错误

比如这样的字符串:宁静致远: adhadjjlskjlhfajfoiweuiddncxcnxchiosafjionjfdhvwureighbv cn vcvhtubfvcx,zjcxljclvhsdhfb 就出现了 问题 如下:



这里用 StaticLayout 来计算分行情况 计算的不对,打印如下:


说明Android 的分行计算方式出现了问题这里找到了一点资料:

http://blog.iamzsx.me/show.html?id=150001

但是在IOS 系统下就label中有 lb.lineBreakMode = NSLineBreakByCharWrapping; 这样的按字符来分行才能填充满每一行.

Android需要在API 23 以上才有IOS 这样的参数,具体代码如下

StaticLayout.Builder builder = StaticLayout.Builder.obtain(msg,0,msg.length(),tv.getPaint(),width);
        builder.setBreakStrategy(StaticLayout.BREAK_STRATEGY_BALANCED);
        StaticLayout staticLayout = builder.build();


在API23 Textview新增加了 参数:

可以设置Textview的内容对齐边界.


另外 利用Paint 来计算文字长度,

int line2length = tv.getPaint().breakText(msg,line1length,msg.length(),true,width,null);

但是只支持纯文字,不支持spannerable的文字,源码中直接把spannerable 转成string了:


而且在测量时候也不支持 spannerable 的测量..




参考:

http://tieba.baidu.com/p/4106306931

http://mikewang.blog.51cto.com/3826268/871765

http://www.eoeandroid.com/blog-578780-22865.html

https://developer.android.com/reference/android/text/StaticLayout.Builder.html




Sesame Preview语音模式:安卓开发调试与团队协作的新范式 在安卓开发领域,实时预览工具通过缩短代码修改到效果呈现的反馈循环,已成为提升开发效率的关键技术。其核心原理在于即时编译与渲染,使开发者能快速验证UI与交互逻辑。这一技术的价值不仅在于提升个人编码效率,更在于优化团队协作与沟通流程。传统的开发沟通往往依赖模糊的口头描述或零散的截图,导致信息损耗与理解偏差。Sesame Preview创新性地引入语音模式,将自然语音与实时预览的屏幕上下文(包括组件树、应用状态)自动关联,形成了可追溯、高保真的“语音批注”系统。这实质上是将非结构化的口头反馈转化为结构化的、带上下 阅读详情

相关推荐

保姆级教程:用Arduino IDE从零配置ESP32-CAM,搞定OV2640摄像头WiFi图传(含CH340驱动避坑)

本文提供了一份详细的ESP32-CAM配置指南,涵盖从硬件连接到软件开发的完整流程,特别针对OV2640摄像头和CH340驱动常见问题提供解决方案。通过Arduino IDE配置和优化技巧,帮助用户快速实现WiFi图传功能,适用于智能家居和物联网项目。

weixin_30889885的博客 520

自动布局时高度算不准的问题

一般,自动布局自适应高度的控件,算不准高度的原因:时机问题。一般系统算高度的时候,应该是依赖了控件的宽度。 而添加了约束的控件,只有当view显示出来的时候,才会根据约束改变frame。 所以系统算高度的时候,约束修改的frame,并没有生效。所以解决问题的办法,就是在创建view的时候,设置一个frame的宽度给他,让他能知道这个控件的宽度,解决上诉的时机问题。

Hg浩的博客 806

Gemini 1.5 百万上下文实战指南:长文档理解与跨文档推理

长上下文模型并非单纯追求token长度,而是为解决跨文档推理、技术文档分析等高价值任务提供语义连贯的推理舞台。其核心原理在于提升信息信噪比与结构化提示能力,技术价值体现在大幅降低人工比对、代码溯源和合规审查的时间成本。典型应用场景包括法务尽调中的因果链挖掘、工程师的代码库级问答、以及产品经理的长周期决策锚定。本文聚焦Google Gemini 1.5,结合百万上下文、长文档理解两大热词,详解从原始材料清洗、语义蒸馏到结构化切片的可复现工作流,助力工程与业务人员将超长上下文真正转化为生产力。

weixin_30299709的博客 374

解决Android TextView中英文混排换行问题

文章目录个人极不建议这样做(之后会说原因)1 现象2 解决思路3不推荐的原因 个人极不建议这样做(之后会说原因) 1 现象 绿色底黄色框内的就是原生TextView出现的情况,出现这种情况的主要原因就是分词问题。TextView会认为英文字符在没有空格给开的时候是一个完整的单词(它不局限于字母,也可能不是个单词)在当前行展示不下且在下一行能完整展示的时候,就会出现这种情况。 2 解决思路 手动计...

KaraShok的博客 6836

解决Android原生TextView显示中英文等末尾参差不齐问题

解决Android中原生TextView显示中英文特殊字符等末尾参差不齐问题

WorkBuddy 实战:从聊天窗口到 AI 工作台,打造个人自动化助理

大模型时代,对话式 AI 常被当作高级搜索框,难以沉淀为生产力。其根源在于上下文断裂——每次对话都从零开始。AI Agent 的核心原理是通过状态保持、工具调用与流程复用,将临时交互固化为可重复的协作机制。WorkBuddy 作为个人 AI 工作台,以 Agent + Skill + 工作流架构解决该问题:Skill 封装操作手册,工作区沉淀知识上下文,自定义指令约束输出风格。这种设计让周报生成、会议纪要、文档初稿、专利检索辅助等重复劳动实现流程化自动产出。掌握 WorkBuddy 怎么用,关键在于从自己重

weixin_33834910的博客 336

android TextView 分散对齐(两端对齐)

import android.content.ClipboardManager; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Paint; import android.os.Build; import android.text.TextUtils...

sinat_35816092的博客 3896

数字后端DRC Violation定位与自动化修复:Innovus与Calibre协同实战

设计规则检查(DRC)是芯片tapeout前确保版图可制造性的关键验证环节。在数字后端流程中,Calibre作为signoff级物理验证工具,会依据代工厂SVRF规则文件对GDS进行严格几何检查;而Innovus则提供快速迭代的in-design DRC反馈。两者协同成为工程师定位violation、保障流片成功的主流工作流。面对成千上万条DRC violation,高效的定位与分类思路、跨工具映射技巧,以及基于Tcl脚本的自动化修复方法,能大幅缩短物理验证周期。本文从DRC的分层定位出发,结合Innovu

weixin_29185167的博客 336

android textView 排版显示参差不齐的解决方法

参考Github上的方法,试了试,效果不错 图片参考: 代码如下: import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.text.Layout; import android.text.StaticLayout; im

山鹰--JAVA之路 1104

【开关电源篇】整流及其滤波电路的工作原理和设计指南-超简单解读

半波整流是一种利用二极管的单向导通特性,将交流电转换为直流电的基础电路。它通过“切除”交流电的半个周期,仅保留另外半个周期来实现整流。1 开关电源超快学习思路点击跳转1.1开关电源的原理、结构和实物入门篇-超简单解读点击跳转1.2开关电源的EMI输入电路-超简单解读点击跳转倍压整流适用于需要高电压、小电流的特殊场合,通过电容充放电实现电压倍增。

2301_81299416的博客 2924

nvlddmkm事件ID14报错排查全指南:从找不到描述到显卡驱动崩溃

系统日志中的“无法找到描述”往往让人一头雾水,但这类提示其实隐藏着驱动故障的关键线索。Windows事件查看器通过事件源和ID记录系统异常,其中显卡驱动相关的内核模式驱动组件一旦超时失败,就会触发TDR机制,产生13、14、153等不同事件ID。理解这些ID的含义,比纠结“找不到描述”本身更重要。对于频繁出现的驱动崩溃问题,可以从日志频率和发生场景判断方向,再通过安全模式下彻底清理驱动、关闭冲突软件、检查供电和温度等步骤逐层定位。无论是游戏满载黑屏,还是睡眠唤醒后闪退,掌握NVIDIA驱动日志的解读逻辑,都

weixin_30545945的博客 414

Android TextView 自动换行问题(zz)

Android的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,原因是: 1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示; 2)一个英文单词不能被显示在两行中( TextView在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 );   如果只是想让

lhs286266503的专栏 6452

UE4/5编译报错MSB3073终极解决指南:从路径检查到MSVC版本降级

本文针对UE4/5开发中常见的MSB3073编译报错,提供了一套从根源到实战的终极解决指南。文章系统性地讲解了错误成因,并分层次指导排查路径字符、环境变量、MSVC版本兼容性、权限冲突等核心问题,重点介绍了通过降级MSVC编译器版本等关键操作来彻底解决此编译难题。

rl6adventurer的博客 1436

关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题

出现错误的现象 我想让textview显示:你好啊430000000呵呵呵呵呵呵呵赫尔呵呵. 由于我设置了maxline=1 ellipsize=”end” 在Textview宽度不够的时候应该显示成 你好啊430000000呵呵呵呵呵呵呵…(理想的显示) 结果在一些手机上 特别是5.0以下的手机 显示成 你好啊… 当时想着这么会出现这个情况呢 于是我上网上搜索了下 比较靠谱的说法是 当你

lhj_android的博客 2269

手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化

本文详细解析了SAP PP供应区域(Supply Area)的配置方法,帮助企业实现线边仓精准发料与物料流优化。通过三级优先级逻辑和四步配置法,系统可自动识别最优组件来源位置,显著提升生产订单处理效率和库存准确率。文章还提供了典型问题解决方案和性能优化技巧,适用于离散制造和重复制造场景。

weixin_29275257的博客 434

万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)

本文详细介绍了PostgreSQL在四大主流环境下的安装方法: Linux系统:针对Ubuntu/Debian和CentOS/RHEL系,分别提供APT/YUM仓库安装步骤,包括初始化配置和服务管理 Windows系统:通过图形化安装程序指导完成安装,包含组件选择、密码设置和pgAdmin配置 macOS系统:推荐使用Homebrew一键安装,支持Apple Silicon和Intel芯片 Docker容器:提供容器化部署方案(文中未展开) 文章强调安装前的版本选择、权限管理和存储规划,并针对各平台给出验证

数据知道的博客 4502

EditText和TextView出现中文、英文等string串的排版问题

默认EditText和TextView自动换行。如果在string中出现了中文字符,排版出现意外,如图所示: 这是因为软盘默认的是半角输入,而字母与数字的占位与汉字不同,所以在默认的情况下会出现如上的排版情况。 但是如果将默认的半角变成全角之后就可以基本解决排版问题: 虽然全角看上去不好看,但是基本不会出现参差不齐。暂时没有找到其他的解决方法,如...

weixin_33901926的博客 311

ZED双目相机环境配置

ZED SDK 安装文件夹中有一个 Python 脚本(get_python_api.py),可以自动检测操作系统、CUDA 和 Python 版本并下载相应的预编译 Python API 包(pyzed)。安装SDK成功后,我们进入ZED SDK文件夹中的tools子文件夹,运行ZED Explorer.exe 以及 ZED Depth Viewer.exe,查看ZED相机是否能正常启用工作。在本例中,我们简单地检索ZED相机的序列号:打开 ZED相机,然后打印其序列号,然后关闭相机。

qq_53545309的博客 2140

Bug记录

记录不常见的bug, 也就是很难Google到的bug,方便自己和其他开发者.1.TabLayout如果不设置tabIndicatorColor会抛如下异常 Error inflating class … Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 0 at android.cont

hjm1fb的专栏 593

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android:解读TextView的StaticLayout

StaticLayout用于布局之后,不会再进行编辑的文本。 Android:TextView的Layout创建过程中提到过Layout创建的过程,所以这里直接从TextView的makeSingleLayout开始。 当判断不满足DynamicLayout和BoringLayout之后,就会开始StaticLayout的创建。 我们在布局中对TextView进行如下设置:手机屏幕密度为4。...

bdmh的专栏 3114

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TextView解决中英文混排自动换行

自定义TextView解决中英文混排自动换行的问题Textview中设置中英文混合格式的字符串时会自动换行,本文就是解决这个问题的办法,废话不多说直接上代码 点击查看原文: 代码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.t

xing_xiangrong的博客 8647

TextView修复中英混排意外换行,集成展开收起功能

Android开发中经常要使用的就是TextView,平时没有注意到,前几天测试提了一个bug,在含有英文和中文的TextView中,因为某些原因导致意外换行,本来以为很简单的问题,结果修复起来发现事情不是这么简单,通过从度娘以及github,google等搜索,最后发现最好的修复方式就是自己实现一个TextView,自己实现onMeasure,onDraw,这样改的最彻底,同时如果不去重写接口,...

james的博客 1210

android breaktext,TextView 的 breakStrategy 属性是怎么回事?

封面图 by Lauren Peng on Unsplash1. 简介自 Andriod API 23(Android 6.0)起,TextView 新增了一个 breakStrategy 属性,这个属性用于控制将一段文本分割成多行时的折行策略,通俗的讲就是决定一行到底需要显示多少文本。breakStrategy 既可以通过 TextView 的 xml 属性 android:breakStr...

weixin_30420045的博客 3025

自定义控件解决android中TextView中英文换行问题

现有textView存在的问题目录 现有textView存在的问题 解决方法 使用方法 完整代码 <TextView android:id="@+id/id_normal" android:layout_width="300dp" android:layout_height="wrap_content" android:backgrou

luqihua222的博客 3158

TextView中英文排版混乱

TextView问题由来TextView在中英文夹杂的时候,会出现自动断行的情况,相信许多人都碰见过。这是系统的一个Bug,在Android5.0以后被修复了,而5.0以下的还没有见到比较好的解决版本。 参考了网上的方法,有的朋友推荐使用全角和半角转换(没有解决问题),也有的推荐了JustifyTextView这个控件(效果也不理想)。 于是我决定自定义一个TextView来做这件事,勉强解决了

crazychen的专栏 1万+
上一篇: 关于selector 里面的坑
下一篇: 编译openssl 1.1.1
jackcoder
博客等级 码龄14年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值