您的位置:首页 > 移动开发 > Android开发

android中textview竖排显示,只能说功能实现了

2015-12-10 23:49 786 查看
今天要做一个项目,要做竖排显示,纠结了一下午 也没有个头绪,一般都是加换行符或者设置一行一个字,但是只能显示一列,回来之后看到看到有人用二维数组来实现的,我也就想了一下

<span style="font-size:14px;">package com.example.templatetest.utils;

import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.widget.TextView;

public class VerTextView {
public static StringBuilder getTextHtoV(String strText,double txtHeight,TextView txt){
StringBuilder sb = new StringBuilder();
int rows = 0;
int row = (int)(txtHeight/getFontHeight(txt.getTextSize()));//一列多少字即多少行
int line = strText.length()/row +1;//多少列
int yu = strText.length()%row;
if (row > strText.length()) {
rows = strText.length();
}else{
rows = row;
}
for (int i = 0; i < yu; i++) {
for (int j = 0; j < line; j++) {
sb.append(strText.substring(i+j * row,i+j * row +1));
sb.append(" ");
}
sb.append("\n");
}
for (int i = yu; i < rows; i++) {
for (int j = 0; j < line - 1; j++) {
sb.append(strText.substring(i+j * row,i+j * row +1));
sb.append(" ");
}
sb.append("\n");
}
return sb;
}
//获取字体高度
public static int getFontHeight(float fontSize)
{
Paint paint = new Paint();
paint.setTextSize(fontSize);
FontMetrics fm = paint.getFontMetrics();
return (int) Math.ceil(fm.descent - fm.top) + 2;
}
}</span>

思想就是根据textview的高度和字体的高度计算出一列展示多少个字,然后根据字体的个数除以一列多少个字得出行数,根据相应的算法拼接起来,可能有些地方不太严谨,先记一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: