android 强制竖排,[Android]实现文字竖排
最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图
竖排中英混合.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]实现文字竖排相关推荐
- css表格文字超数量就竖排_css实现文字竖排的方式
html中文字的默认排列是横向排列的,但一些特殊情况下是需要文字竖向排列的. 单行文字竖向排列 .onecn{ width: 20px; margin: 0 auto; line-height: 24 ...
- android 强制退出程序,Android 强制且彻底的退出app
方法1.使用MyApplication.java文件代码如下: package com.ss.zshcloud.utils; import android.app.Activity; import a ...
- android 横向竖排文字,[Android]实现文字竖排
最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图 竖排中英混合.PNG 分析:英文是一个完整的单词旋转了90度,中文一字一行 思路: 要放textview的地方用LinearLayout占位 ...
- css html 字竖,CSS实现文字竖排 DIV CSS文字垂直竖列排版显示如何实现?
DIV CSS实现文字竖排排版显示兼容各大浏览器,让文字垂直竖列排版布局. 有时我们需要一段文字进行从上到下竖列排版,我们知道CSS样式中有一样式可以让其竖列排版,但所有浏览器不全兼容,逼不得已放弃. ...
- css writing-mode文字竖排
解决英文以及间距问题 文字竖排 writing-mode: vertical-rl; 解决英文竖排问题 text-orientation:upright; 字间距 letter-spacing:8px ...
- 在Android使用XML文件控制按钮文字在各种状态下的颜色
最近在项目中遇到新的需求,就是在按钮在选按的时候需要将文字变为白色,但android默认的按钮颜色为黑色,之前也没有考虑过类似的问题. 通过doc文档,发现按钮文字的处理方式和背景的处理方式很相似,同 ...
- android文字广告的循环滚动,android怎样写一个循环文字滚动的TextView
效果图: 在layout中这样来声明: android:layout_width="wrap_content" android:layout_height="wrap_c ...
- Android TextView中设定个别文字字体显示格式
Android TextView中设定个别文字字体显示格式 文章分类:移动开发 用Html来格式化字符,例如要实现如下的显示: "这只是一个测试字符串,测试黑体字.斜体字.下划线.红色字的显示." 可 ...
- Android自定义View绘制闪闪发光的文字
如何实现类似网页效果中闪闪发光的文字,通过自定义View可以实现这一炫酷效果 1.自定义View public class FlickTextView extends TextView {privat ...
- Android应用程序之间共享文字和图片(一)
以下为TestReceiveShare1工程 MainActivity如下: package cn.testreceiveshare1; import java.util.ArrayList; imp ...
最新文章
- [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版
- mysql 调用webservice_C#调用Webservice的代码实现方式汇总
- qt 拖拽 修改大小
- 控件尺寸规范_微信小程序设计规范你了解多少
- Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
- 字符串之字符判断以及字母的大小写转换
- SpringBoot 整合 Redis 哨兵机制_01
- Java方法的可变参数
- AcWing 854. Floyd求最短路(模板)
- leetcode : Rotate List
- 张北草原和锡林郭勒草原区别_草原:比您不知道的恶魔还强
- 线性代数之——复数矩阵
- 奥斯汀页眉怎么设置_wps怎么只删除本页的页眉_Word页眉的设置和删除,这些问题你有遇到过吗?...
- Java实现FTP下载文件到客户端(浏览器)
- linux 强制类型转换,C++ 新标准下的强制类型转换详解
- c语言课程设计文献检索,文献检索课学习心得三篇(2)
- 使用向日葵进行远程办公,手机电脑都可以时时刻刻使用远端电脑
- Android 连接wifi 检测是否需要portal 认证
- torch.roll 函数的理解
- iOS 程序 main 函数之前发生了什么
热门文章
- PDF文件title乱码
- 使用STM32进行Flash地址空间的数据读取
- 重邮python实验课之华氏温度转摄氏温度速查表
- 人工智能、机器学习、神经网络和深度学习的发展历程(上)
- 【Active Learning - 09】主动学习策略研究及其在图像分类中的应用:研究背景与研究意义
- Java-买卖股票的最佳时机
- gmap 支持python吗_Python:地图上的标记标签使用gmap.marker_层使用hover_-tex选项不工作...
- c# 中通快递对接_物流快递单号智能识别快递公司API接口 C#
- DatawhaleLeeML-Task05-网络设计的技巧第二部分
- WINDOWS11自带输入法无法切换中英文问题解决办法