默认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串的排版问题相关推荐

  1. android edittext 排版,EditText和TextView出现中文、英文等string串的排版问题

    默认EditText和TextView自动换行.如果在string中出现了中文字符,排版出现意外,如图所示: 这是因为软盘默认的是半角输入,而字母与数字的占位与汉字不同,所以在默认的情况下会出现如上的 ...

  2. windows10+Ctex+winedt10.3+中文\英文期刊双栏模板+排版时遇到的坑

    ``环境搭建: https://www.cnblogs.com/xiachongkun/p/8176390.html 中文期刊模板: 可使用自动化学报双栏latex模板:http://www.aas. ...

  3. python(40):利用utf-8编码判断中文英文字符

    #!/usr/bin/env Python # -*- coding:GBK -*- """汉字处理的工具: 判断unicode是否是汉字,数字,英文,或者其他字符. 全 ...

  4. 解决Android EditText使用扫码枪与中文输入法冲突的问题

    使用码枪扫收款码等信息时,若当前使用的是部分中文输入法,则会可能出现扫码结果不准确的问题,解决此问题的方法是自定义EditText,并根据实际需求重写dispatchKeyEventPreIme方法. ...

  5. C# 货币金额中文(英文)大写转换方法-工具类

    public static class Money {private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";private ...

  6. python英文字符表示_python利用utf-8编码判断中文英文字符(转)

    下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...

  7. Phalcon使用多语言环境(切换中文/英文等)

    Phalcon使用多语言环境(切换中文/英文等) lang类文件 namespace Utils; use Phalcon\Http\Request; use Phalcon\Translate\Ad ...

  8. 使用google的bert结合哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer

    使用bert的哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer 前提 简要介绍 开始 导入必要的包和环境 准备并读取数据 导入模型的tokenizer 对数据进行t ...

  9. css英文左右对齐,中文英文左右padding一致两端对齐实现_js

    先看下图: 就是一个定宽的容器,左右padding值20像素,结果输入一段文字后(有中文也有英文字符),会发现右侧根本就不对齐,有些地方距离右侧的空白大小也不是20像素,感觉不和谐,设计师就希望排列能 ...

最新文章

  1. 浪漫的形式有100种,单身的就1种!
  2. 【正一专栏】2018年欧冠八强猜想
  3. Elasticsearch 集群平衡配置
  4. 《荣耀战魂》的环境设计制作经验
  5. Ranger-AdminServer安装(开启Kerberos)
  6. c# 再次尝试 连接失败_手机投屏电视连接不上怎么回事?
  7. Redis内存缓存系统入门
  8. 冒泡排序解析 + 代码实现(C语言)
  9. 实对称矩阵的特征值求法_特征值的最大值与最小值
  10. 新手CrossApp 之IndicatorView小结
  11. python胶水语言融合其他语言_1. Python中如何使用其他语言?(python的胶水作用,python又叫胶水语言)...
  12. matlab插值函数的作用,matlab 插值函数
  13. 语音识别软件_语音识别 软件_日语语音识别软件 - 云+社区 - 腾讯云
  14. 鼠标测试工具Simple_Mouse_Test
  15. 无人机巡检技术要点解读,无人机巡检方案实现
  16. Java面试题基础系列
  17. hdu6305(笛卡尔树/分治)
  18. 移动硬盘打开后点击右键电脑就卡死,资源管理就崩溃
  19. 游戏car android,Car Parking Multiplayer游戏
  20. 华为关闭telnet命令_华为AR28-11路由器如何关闭telnet服务?

热门文章

  1. C# Idioms: Enum还是Enum Class(枚举类)
  2. Vml+Dhtml:制作一个应用渐变颜色效果不错的进度条
  3. 使用VC内嵌Python实现的一个代码检测工具
  4. CUDA Samples: image normalize(mean/standard deviation)
  5. chrome弱网_请你进行一下弱网模拟
  6. php libdir,PHP扩展小结
  7. python开源库推荐_推荐5个值得关注的Python开源项目
  8. Java项目:智能制造生产管理平台(java+SSM+mysql+Maven+Easyui+JSP)
  9. 【java】关于面向对象优点的个人理解
  10. java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...