首页 > 其他分享 >Android 英文数字混排导致提前换行完美解决

Android 英文数字混排导致提前换行完美解决

时间:2022-11-04 12:03:04浏览次数:57  
标签:QJstr String 换行 半角 Tstr 空格 混排 Android outStrBuf


前言

数字加英文混排造成,段落提前换行异常。网上可找到处理方式较多。

处理方式:

1.自定义TextView,测量文字宽度与父窗体宽度自行进行人为换行占主流。
2.全角半角进行统一,将字符串中的半角转换成全角,(转换之后字符宽度变大效果不好)

如图效果:

Android 英文数字混排导致提前换行完美解决_半角

解决方式:

自定义TextView 有偶发的oom情况,半角字符转全角字符有字体不美观情况。

从字面上看是由于空格导致的提前换行。

​​六种空格的区别进入​​

只要将半角的空格转换成全角空格就可以完美解决。oom情况也可以避免掉

如下:

package com.whalefail.myapplication

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import java.io.UnsupportedEncodingException


class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val str="start 1111111111111 1111111111111 teacher teacher teacherteacher 1111111 end"

text.text=half2Fullchange(str)

}

/**
* 半角转全角
* @Methods Name half2Fullchange
* @Create In 2012-8-24 By v-jiangwei
* @param QJstr
* @return String
*/
fun half2Fullchange(QJstr: String): String {
val outStrBuf = StringBuffer("")
var Tstr = ""
var b: ByteArray? = null
for (i in 0 until QJstr.length) {
Tstr = QJstr.substring(i, i + 1)
if (Tstr == " ") {
// 半角空格
outStrBuf.append(Tstr)
continue
}
try {
b = Tstr.toByteArray(charset("unicode"))
if (b[2].equals(0)) {
// 半角
b[3] = (b[3] - 32).toByte()
b[2] = -1
outStrBuf.append(String(b, charset("unicode")))
} else {
outStrBuf.append(Tstr)
}
} catch (e: UnsupportedEncodingException) {
e.printStackTrace()
}
}
return outStrBuf.toString()
}


}

Android 英文数字混排导致提前换行完美解决_android_02



标签:QJstr,String,换行,半角,Tstr,空格,混排,Android,outStrBuf
From: https://blog.51cto.com/u_15861646/5823440

相关文章

  • android studio 4.1变更
    前言这两天被androidstudio4.1升级后遇到的问题折腾的头大。虽然自己遇到的问题和网友遇到的问题不一样。总结一句话。升级需谨慎问题归问题,这次更新还是有很多亮点。官......
  • Android 基础 MaterialButton
    项目中经常会使用到,给按钮添加边框,点击效果,圆角,icon+文字圆角。发现系统就有提供好的组件,除了CardView可以设置。androidmaterialdesign支持库中各种可以直接拿来用的组......
  • android 手机 apk安装失败对应码
    下面是从网上找到的几种常见的错误及解决方法:1、INSTALL_FAILED_INVALID_APK:无效的安装包,安装包已损坏请检查安装包是否完整。如果是xpk包,可以通过手动安装xpk来检测一......
  • Android 共享内存(ashmem)持续更新
    Android共享内存(ashmem)前言项目中接入讯飞语音合成,在sdk中看到MemoryFile,了解下用法发现,看到的只是冰山一角。官方介绍:SharedMemoryenablesthecreation,mapping,and......
  • Android kotlin泛型知识点梳理
    前言学习知识需要提前设立目标,带着问题学习才能有的放矢。无论是java的泛型还是kotlin语言的泛型均是写框架,写通用工具类神器。如果不熟悉泛型语法,开发过程中将会遇到很多奇......
  • Android kotlin 类委托 by,by lazy关键
    前言接触kotlin语言也有几年时间了。日常开发工作中也推荐使用kotlin,但是对于一些kotlin语言语法的细节没有进行系统学习。碎片的知识点让工作中屡屡碰壁,前些天开始学习comp......
  • 【AGC】SDK未经用户同意获取AndroidID问题
     1.AGC-接入agc的sdk检测到未经用户同意获取AndroidId的问题。问题背景:开发者接入华为性能管理、崩溃服务、华为分析等SDK后上架小米应用商店被拒,称检测到未经用户同意获取......
  • python 中print函数实现输出不换行
     001、[root@pc1test3]#python2##python2Python2.7.5(default,Jun282022,15:30:04)[GCC4.8.520150623(RedHat4.8.5-44)]onlinux2Type"help......
  • Android实现页面跳转
    Android实现页面跳转​​MainActivity​​​绑定​​activity_main.xml​​​,​​Main2Activity​​​绑定​​activity_main2.xml​​​,则可以实现从​​activity_main.xml......
  • Android平台GB28181接入端如何对接UVC摄像头?
    我们在对接Android平台GB28181接入的时候,有公司提出这样的需求,除了采集执法记录仪摄像头自带的数据外,还想通过执法记录仪采集外接UVC摄像头。实际上,这块对我们来说有点炒冷......