EditText和TextView出现中文、英文等string串的排版问题
默认EditText和TextView自动换行。如果在string中出现了中文字符,排版出现意外,如图所示:
这是因为软盘默认的是半角输入,而字母与数字的占位与汉字不同,所以在默认的情况下会出现如上的排版情况。
但是如果将默认的半角变成全角之后就可以基本解决排版问题:
虽然全角看上去不好看,但是基本不会出现参差不齐。暂时没有找到其他的解决方法,如果不喜欢全角的效果,看来只能用canvas画上去了。。。
代码:
mTextWrite = (EditText) findViewById(R.id.note_editor_write);// 得到写文本框
//将输入的字母全部变成全角
mTextWrite.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
String temp = mTextWrite.getText().toString();
mTextWrite.setText("");
mTextWrite.append(ToSBC(temp));
return false;
}
});
// 半角转化为全角的方法
public String ToSBC(String input) {
// 半角转全角:
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 32) {
c[i] = (char) 12288;
continue;
}
if (c[i] < 127 && c[i]>32)
c[i] = (char) (c[i] + 65248);
}
return new String(c);
}
// 全角转化为半角的方法
public String ToDBC(String input) {
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (isChinese(c[i])) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}
ps:利用编码的方式判断字符是否为汉字的方法:
private boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
pps:出现排版错误的另一个情况:
android textview自动换行时为了保持单词的完整性,单词不会因为换行而断开。
解决方法:计算字符串长度,然后手动设定每一行显示多少个字母并加上‘\n‘
转载于:https://blog.51cto.com/2960629/636828
EditText和TextView出现中文、英文等string串的排版问题相关推荐
- android edittext 排版,EditText和TextView出现中文、英文等string串的排版问题
默认EditText和TextView自动换行.如果在string中出现了中文字符,排版出现意外,如图所示: 这是因为软盘默认的是半角输入,而字母与数字的占位与汉字不同,所以在默认的情况下会出现如上的 ...
- windows10+Ctex+winedt10.3+中文\英文期刊双栏模板+排版时遇到的坑
``环境搭建: https://www.cnblogs.com/xiachongkun/p/8176390.html 中文期刊模板: 可使用自动化学报双栏latex模板:http://www.aas. ...
- python(40):利用utf-8编码判断中文英文字符
#!/usr/bin/env Python # -*- coding:GBK -*- """汉字处理的工具: 判断unicode是否是汉字,数字,英文,或者其他字符. 全 ...
- 解决Android EditText使用扫码枪与中文输入法冲突的问题
使用码枪扫收款码等信息时,若当前使用的是部分中文输入法,则会可能出现扫码结果不准确的问题,解决此问题的方法是自定义EditText,并根据实际需求重写dispatchKeyEventPreIme方法. ...
- C# 货币金额中文(英文)大写转换方法-工具类
public static class Money {private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";private ...
- python英文字符表示_python利用utf-8编码判断中文英文字符(转)
下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...
- Phalcon使用多语言环境(切换中文/英文等)
Phalcon使用多语言环境(切换中文/英文等) lang类文件 namespace Utils; use Phalcon\Http\Request; use Phalcon\Translate\Ad ...
- 使用google的bert结合哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer
使用bert的哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer 前提 简要介绍 开始 导入必要的包和环境 准备并读取数据 导入模型的tokenizer 对数据进行t ...
- css英文左右对齐,中文英文左右padding一致两端对齐实现_js
先看下图: 就是一个定宽的容器,左右padding值20像素,结果输入一段文字后(有中文也有英文字符),会发现右侧根本就不对齐,有些地方距离右侧的空白大小也不是20像素,感觉不和谐,设计师就希望排列能 ...
最新文章
- 浪漫的形式有100种,单身的就1种!
- 【正一专栏】2018年欧冠八强猜想
- Elasticsearch 集群平衡配置
- 《荣耀战魂》的环境设计制作经验
- Ranger-AdminServer安装(开启Kerberos)
- c# 再次尝试 连接失败_手机投屏电视连接不上怎么回事?
- Redis内存缓存系统入门
- 冒泡排序解析 + 代码实现(C语言)
- 实对称矩阵的特征值求法_特征值的最大值与最小值
- 新手CrossApp 之IndicatorView小结
- python胶水语言融合其他语言_1. Python中如何使用其他语言?(python的胶水作用,python又叫胶水语言)...
- matlab插值函数的作用,matlab 插值函数
- 语音识别软件_语音识别 软件_日语语音识别软件 - 云+社区 - 腾讯云
- 鼠标测试工具Simple_Mouse_Test
- 无人机巡检技术要点解读,无人机巡检方案实现
- Java面试题基础系列
- hdu6305(笛卡尔树/分治)
- 移动硬盘打开后点击右键电脑就卡死,资源管理就崩溃
- 游戏car android,Car Parking Multiplayer游戏
- 华为关闭telnet命令_华为AR28-11路由器如何关闭telnet服务?
热门文章
- C# Idioms: Enum还是Enum Class(枚举类)
- Vml+Dhtml:制作一个应用渐变颜色效果不错的进度条
- 使用VC内嵌Python实现的一个代码检测工具
- CUDA Samples: image normalize(mean/standard deviation)
- chrome弱网_请你进行一下弱网模拟
- php libdir,PHP扩展小结
- python开源库推荐_推荐5个值得关注的Python开源项目
- Java项目:智能制造生产管理平台(java+SSM+mysql+Maven+Easyui+JSP)
- 【java】关于面向对象优点的个人理解
- java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...