概述
树欲静,而风不止
PS:这两天一直在更改公司项目代码,入职半个月以来,分配了第一个开发任务,重构 个人主页。开始浏览了下原型图,很简单,只是UI风格变换了,但是不能只是改改UI,毕竟项目以后还是要自己维护的。
所以 打算 在 个人信息界面 使用MVP架构,慢慢蚕食整个项目,达到项目重构的目的。
预定工期:2天
上周五一天把界面搭建出来,尽量拆分,复用,然后构建逻辑层,整个框子搭建完成,
今天打算把原有接口数据,逻辑,堆到P 层,发现自己想象太简单了。一个我的界面,点击事件30+,接口五六个,各个都是根据返回数据判断,进入界面。最终只能做到 接口放在P 层,返回数据处理,实在是看不懂。全部使用JSONObject 一层一层解析。最重要是 没有接口文档,没有需求文档,导致我在逻辑这块一行代码都不敢更改。幸好(管理层已经拍板,后台整体重构)
TextView 使我们使用最多的控件。但是一些属性再用到的时候还是需要百度,导致开发效率极低。所以这里记录下,方便下次使用。
-
TextView 控件中使用图片详解
-
限制文字显示长度
-
TextView排版问题
a、TextView 中添加图标 属性:
- android:drawableBottom
- android:drawableRight
- android:drawableTop
- android:drawableLeft
- android:drawablePadding 设置文字与图片的间隔
b、使用drawableBottom设置过图片之后,发现UI提供的图片偏大,如何控制图片大小
创建一个文件left_img.xml,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/qa"
android:width="18dp"
android:height="18dp" />
</layer-list >
然后在布局中引用:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="18dp"
android:paddingBottom="18dp"
android:paddingLeft="12dp"
android:drawablePadding="12dp"
android:gravity="center|left"
android:drawableLeft="@drawable/left_img" />
2、控制TextView显示;
(注意:layout_width="wrap_content",宽度必须是wrap_content,为match_parent无效)
android:maxEms="10" //限制字节长度为10
android:ellipsize="end" //省略号在最后面
android:singleLine="true" //超过长度10为省略号
android:lines=“2”//显示行数 android
android:textStyle=“bold”文字加
//设置不为加粗
textView .setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
//设置为正常
textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
//设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
3、字体两端对齐的问题
工具类:
public class AlignedTextUtils {
private static int n = 0;// 原Str拥有的字符个数
private static SpannableString spannableString;
private static double multiple = 0;// 放大倍数
/**
* 对显示的字符串进行格式化 比如输入:出生年月 输出结果:出正生正年正月
*/
public static String formatStr(String str) {
if (TextUtils.isEmpty(str)) {
return "";
}
n = str.length();
if (n >= 6) {
return str;
}
StringBuilder sb = new StringBuilder(str);
for (int i = n - 1; i > 0; i--) {
sb.insert(i, "正");
}
return sb.toString();
}
/**
* 对显示字符串进行格式化 比如输入:安正卓正机正器正人 输出结果:安 卓 机 器 人 * * @param str * @return
*/
public static SpannableString formatText(String str) {
if (TextUtils.isEmpty(str)) {
return null;
}
str = formatStr(str);
if (str.length() <= 6) {
return null;
}
spannableString = new SpannableString(str);
switch (n) {
case 2:
multiple = 4;
break;
case 3:
multiple = 1.5;
break;
case 4:
multiple = 0.66666666666666666666666666666666667;
break;
case 5:
multiple = 0.25;
break;
default:
break;
}
for (int i = 1; i < str.length(); i = i + 2) {
spannableString.setSpan(new RelativeSizeSpan((float) multiple), i, i + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(Color.TRANSPARENT), i, i + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
return spannableString;
}
}
使用
tv_code.setText(AlignedTextUtils.formatStr("验 证 码:"));
textView_sex.setText(AlignedTextUtils.formatStr("性 别:"));
textView_selectcity.setText(AlignedTextUtils.formatStr("所在城市 :"));
textView_individualresume.setText(AlignedTextUtils.formatStr("个人简介 :"));
引用 自导自演的机器人 博文
长城不是一天建成的,罗马不是一天到达。
最后
以上就是伶俐小兔子为你收集整理的TextView 开发中长使用的几种属性 —— 开发记录的全部内容,希望文章能够帮你解决TextView 开发中长使用的几种属性 —— 开发记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复