默认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‘

android edittext 排版,EditText和TextView出现中文、英文等string串的排版问题相关推荐

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

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

  2. Android 删除其他多余语言(保留中文+英文)

    Android 添加语言目录的函数:frameworks/base/core/java/com/android/internal/app/LocalePicker.java 根据以上方法分析.语言配置 ...

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

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

  4. Android开发之EditText属性详解+++ImageView的属性

    Button的使用 不要阴影Button ---> TextView   (5.0新特性) <!-- 去按钮立体效果 --> <item name="android: ...

  5. Android限定EditText的输入类型为数字或者英文(包括大小写)

    http://hi.baidu.com/tozhang/item/4dfeaafb9aec2813d7ff8c99 Android限定EditText的输入类型为数字或者英文(包括大小写) // 监听 ...

  6. android里的editText怎么用,Android自定义控件EditText使用详解

    本文实例为大家分享了Android自定义控件EditText的具体代码,供大家参考,具体内容如下 自定义控件分三种: 1. 自绘控件 2. 组合控件 3. 继承控件 代码已上传到 github 以后的 ...

  7. android 代码设置EditText的hint字符

    今天,简单讲讲android里如何在代码里设置  EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...

  8. android input鼠标坐标,android - 如何在EditText中设置光标位置?

    android - 如何在EditText中设置光标位置? 有两个EditText,在加载页面时,第一个EditText中设置了一个文本,所以现在光标将在EditText的起始位置,我想在第二个Edi ...

  9. Android文本输入框EditText方法说明和属性

    1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以".&quo ...

最新文章

  1. PDF编辑处理的一条龙服务
  2. Kohana中控制器继承自Controller_Template的问题
  3. thymeleaf的具体语法
  4. Linux | Ubuntu:十年,十个关键时刻
  5. Python程序:求最小公倍数
  6. ios开发 多人语音聊天_iOS 新手集成单聊、群聊、语音和视频通话的简述
  7. 用vue.js重构订单计算页面
  8. java泛型详解_Java泛型详解(透彻)
  9. ARM-ELF文件格式与GNU ARM Linker机制
  10. 【人工智能】NIPS2019 | 2019NIPS论文 | NeurIPS2019最新更新论文~持续更新| NIPS2019百度云下载
  11. 【Python成长之路】教你在1分钟内,打造属于你自己的手机应用入口
  12. 追根溯源之最好的Spring AOP解析
  13. 一周新论文 | 2020年第13周 | 自然语言处理相关
  14. Windows dss代理摄像头rtsp流 rtsp摄像头+ffmpeg+vlc
  15. android 蓝牙传输文件,android-通过蓝牙发送文件
  16. ipadpro分屏怎么操作_iPad到手后必备的高效设置技巧(iPad Pro、iPad Air、iPad mini学习生产工具...
  17. jenkins+pipeline+Amazon_EKS部署java服务
  18. c语言 杨平 答案,C语言课设作业模版.doc
  19. Vue分页页码栏设计
  20. 无法查询往年计算机成绩,计算机二级成绩过了的话是不是一年之内在网上能查到一年之后就查不到了啊...

热门文章

  1. [Excel常用函数] sumif sumifs函数
  2. Qt 之 中英文切换的使用
  3. HTTP中常见的状态码代表的意思比如202、303、404、505、访问网络时有时经常见的状态,也是面试题中关于HTTP经常出现的
  4. 玉米社:SEM百度竞价推广转化成本过高要如何处理?
  5. 部分只能在实机运行的APP抓包思路-免root框架神器
  6. 神器Android键值数据库MMKV——基于 mmap 的高性能通用 key-value 组件
  7. Banner无限轮播
  8. mysql视图 实验报告_数据库实验报告(视图).doc
  9. h5+(mui) 截图分享微信
  10. 大批量其他经纬度转换为百度地图经纬度