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

竖排中英混合.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. android 横向多级列表,Android实现横向二级菜单

    本文实例为大家分享了Android二级横向菜单的实现过程.效果如上图: 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下这个效果,首先说一下逻辑 ...

  2. Android横向滚动卡片,Android实现横向滑动卡片效果

    Android实现横向滑动卡片效果 发布时间:2020-09-04 22:51:17 来源:脚本之家 阅读:255 作者:itbobby 最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定 ...

  3. android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能

    Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...

  4. android 横向跑马灯,Android 横向 跑马灯效果TextView

    你瞅啥? 自定义控件MarqueeView import android.content.Context; import android.graphics.Rect; import android.t ...

  5. android 横向滑动 回弹,android ScrollView水平滑动回弹

    在研究了View的一些属性之后做了个Scroll的水平滑动回弹. 效果图: 主要代码: import android.content.Context; import android.graphics. ...

  6. android 横向拖动选取,Android HorizontalRefresh 一个可以左右拖动刷新的控件

    欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录. 欢迎关注我们的微信公众号:杨守乐 转载来源:杨守乐 本文由:[吧主的博客]分享 每日英语 life is craz ...

  7. android 横向滑动事件,android左右手势滑动事件处理

    建了个交流群:416157653,欢迎大家加入讨论 要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new GestureDetector(MainActivity.th ...

  8. android横向排列 间隙,Android开发消除横向排列的多个Button之间的空隙

    一.问题重述 摘要里描述的可能不太清楚,问题如下图: 如何消除Button1和Button2之间的空隙,以及Button与左右边界之间的空隙? 二.问题根源 这里出现的空隙其实是Button的背景图片 ...

  9. android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...

    为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...

  10. android横向滑动选项卡,android – 如何使用可滑动选项卡实现PageTransformer

    在我的示例代码中,我在MainActivity. java中有三个可滑动的选项卡,即: Android,IOS和WINDOWS,我使用滑动在选项卡之间切换. 现在,我必须使用Swipeable Tab ...

最新文章

  1. 构造函数的初始化,初始化列表还是大括号里好,那种效率高
  2. ML之Clustering之LPA:LPA算法主要思路、输出结果、代码实现等相关配图之详细攻略
  3. 商品图片放大镜的JavaScript实现
  4. 蓝桥杯第七届国赛JAVA真题----机器人塔
  5. 西瓜书机器学习总结(一)
  6. Linux下查看软、硬raid信息的方法
  7. 极简风海报作品合集|过目不忘的海报大片,越看越过瘾
  8. LeetCode 473. 火柴拼正方形
  9. Direcshow相关资料
  10. Java-注解第一篇认识Annotation
  11. 数据库kettle,datax,DBMigration,RazorSQL几款迁移工具使用感受(以及如何迁移表的结构如主键,索引,约束等)
  12. VLSI Basic2——OCV
  13. CCF GitLink开源编程夏令营 · 学生开放报名!
  14. Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)
  15. 测试人员为什么也要学习Linux操作系统
  16. Error: Corrupted zip: missing XXX bytes.
  17. C1认证学习十(Ipv6)
  18. sqlserver 2000安装图解教程
  19. 快讯!Apache ShardingSphere 官方文档 pdf 版已上线
  20. 虚拟机里的linux磁盘空间扩容

热门文章

  1. Html实现歌曲歌词同步
  2. HP6510笔记本电脑驱动安装
  3. ArcGIS应用专栏——根据style文件一键设置图层样式
  4. 408科目中的专业名词及英文缩写
  5. 使用了Dialog,Android开发提升一个档次
  6. linux dev shm,使用Linux的/dev/shm
  7. DDos攻击学习篇-进行一次简单的DDos攻击
  8. 弹窗和 window 的方法
  9. 滨江学院15计算机篮球赛,计算机应用工程系“迎新杯”篮球对抗赛颁奖典礼
  10. 服务器tomcat版本修改密码,tomcat 9.0配置管理员用户名和密码