最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图

竖排中英混合.PNG

分析:英文是一个完整的单词旋转了90度,中文一字一行

思路:

要放textview的地方用LinearLayout占位,方向是竖向,等待放入textview

遍历要显示的字符串,按照字符顺序分割成英文和中文的字符组

中文字符组装进横向textview,设置为一个字一行;英文字符组装进竖向textview

按照顺序放进LinearLayout

代码

填充textview的部分没有写,可以参考上面的链接和google。

将来有时间再写成自定义控件。

xml:

android:orientation="vertical"/>

java:

int CHAR_TYPE_H = 0; // 需要一字一行的横向文字类型,中文或其它语种,看具体业务

int CHAR_TYPE_V = 1; // 需要竖向的文字类型,英文,可能有的需求也会包含数字等

Map strMap = new LinkedHashMap(); // 存储字符组,要选择有序容器,保留字符串中原本的字符顺序

public void initialView() {

char[] chars = str.toCharArray();

StringBuilder s = new StringBuilder();

int lastCharType = CHAR_TYPE_H; // 上一个字符的类型,这里设置默认值

int currentCharType = CHAR_TYPE_H; // 记录遍历时字符的类型,这里设置默认值

for(int i = 0; i < chars.length; i++) {

// 判断当前字符的类型

if(Character.isDigit(chars[i]) || Character.isLetter(chars[i])) {

currentCharType = CHAR_TYPE_V;

} else {

currentCharType = CHAR_TYPE_H;

}

// 是否与上一个字符类型相同,如果不同则截断,形成字符组,如果相同则不做处理

if (i != 0 && currentCharType != lastCharType) {

strMap.put(s.toString(), currentCharType);

s = new StringBuilder();

} else {

s.append(chars[i]);

}

// 更新lastCharType

lastCharType = currentCharType;

}

// 把每个字符组形成textview,填充进容器(即上文的linearlayout)

// 具体方法参考上文链接,此处省略

for (Map.Entry entry : strMap.entrySet()) {

String s1 = entry.getKey();

Integer type = entry.getValue();

if (type == CHAR_TYPE_H) {

// 形成横向一字一行的textview

} else {

// 形成纵向显示的textview

}

linearLayout.addView(textView);

}

}

最好做成自定义控件,重复使用简单省事。

有任何疑问,欢迎共同讨论。

android 强制竖排,[Android]实现文字竖排相关推荐

  1. css表格文字超数量就竖排_css实现文字竖排的方式

    html中文字的默认排列是横向排列的,但一些特殊情况下是需要文字竖向排列的. 单行文字竖向排列 .onecn{ width: 20px; margin: 0 auto; line-height: 24 ...

  2. android 强制退出程序,Android 强制且彻底的退出app

    方法1.使用MyApplication.java文件代码如下: package com.ss.zshcloud.utils; import android.app.Activity; import a ...

  3. android 横向竖排文字,[Android]实现文字竖排

    最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图 竖排中英混合.PNG 分析:英文是一个完整的单词旋转了90度,中文一字一行 思路: 要放textview的地方用LinearLayout占位 ...

  4. css html 字竖,CSS实现文字竖排 DIV CSS文字垂直竖列排版显示如何实现?

    DIV CSS实现文字竖排排版显示兼容各大浏览器,让文字垂直竖列排版布局. 有时我们需要一段文字进行从上到下竖列排版,我们知道CSS样式中有一样式可以让其竖列排版,但所有浏览器不全兼容,逼不得已放弃. ...

  5. css writing-mode文字竖排

    解决英文以及间距问题 文字竖排 writing-mode: vertical-rl; 解决英文竖排问题 text-orientation:upright; 字间距 letter-spacing:8px ...

  6. 在Android使用XML文件控制按钮文字在各种状态下的颜色

    最近在项目中遇到新的需求,就是在按钮在选按的时候需要将文字变为白色,但android默认的按钮颜色为黑色,之前也没有考虑过类似的问题. 通过doc文档,发现按钮文字的处理方式和背景的处理方式很相似,同 ...

  7. android文字广告的循环滚动,android怎样写一个循环文字滚动的TextView

    效果图: 在layout中这样来声明: android:layout_width="wrap_content" android:layout_height="wrap_c ...

  8. Android TextView中设定个别文字字体显示格式

    Android TextView中设定个别文字字体显示格式 文章分类:移动开发 用Html来格式化字符,例如要实现如下的显示: "这只是一个测试字符串,测试黑体字.斜体字.下划线.红色字的显示." 可 ...

  9. Android自定义View绘制闪闪发光的文字

    如何实现类似网页效果中闪闪发光的文字,通过自定义View可以实现这一炫酷效果 1.自定义View public class FlickTextView extends TextView {privat ...

  10. Android应用程序之间共享文字和图片(一)

    以下为TestReceiveShare1工程 MainActivity如下: package cn.testreceiveshare1; import java.util.ArrayList; imp ...

最新文章

  1. [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版
  2. mysql 调用webservice_C#调用Webservice的代码实现方式汇总
  3. qt 拖拽 修改大小
  4. 控件尺寸规范_微信小程序设计规范你了解多少
  5. Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
  6. 字符串之字符判断以及字母的大小写转换
  7. SpringBoot 整合 Redis 哨兵机制_01
  8. Java方法的可变参数
  9. AcWing 854. Floyd求最短路(模板)
  10. leetcode : Rotate List
  11. 张北草原和锡林郭勒草原区别_草原:比您不知道的恶魔还强
  12. 线性代数之——复数矩阵
  13. 奥斯汀页眉怎么设置_wps怎么只删除本页的页眉_Word页眉的设置和删除,这些问题你有遇到过吗?...
  14. Java实现FTP下载文件到客户端(浏览器)
  15. linux 强制类型转换,C++ 新标准下的强制类型转换详解
  16. c语言课程设计文献检索,文献检索课学习心得三篇(2)
  17. 使用向日葵进行远程办公,手机电脑都可以时时刻刻使用远端电脑
  18. Android 连接wifi 检测是否需要portal 认证
  19. torch.roll 函数的理解
  20. iOS 程序 main 函数之前发生了什么

热门文章

  1. PDF文件title乱码
  2. 使用STM32进行Flash地址空间的数据读取
  3. 重邮python实验课之华氏温度转摄氏温度速查表
  4. 人工智能、机器学习、神经网络和深度学习的发展历程(上)
  5. 【Active Learning - 09】主动学习策略研究及其在图像分类中的应用:研究背景与研究意义
  6. Java-买卖股票的最佳时机
  7. gmap 支持python吗_Python:地图上的标记标签使用gmap.marker_层使用hover_-tex选项不工作...
  8. c# 中通快递对接_物流快递单号智能识别快递公司API接口 C#
  9. DatawhaleLeeML-Task05-网络设计的技巧第二部分
  10. WINDOWS11自带输入法无法切换中英文问题解决办法