- Android Quick Tips #1 — TextVi
- Android Quick Tips #2 — Android
- Android Quick Tips #6 — Android
- (七)Android常用开发问题及经验分享(转)
- Android Quick Tips #4 — Debuggin
- Android Quick Tips #7 — Intents
- Android Quick Tips #9 — How to A
- Android Quick Tips #3 — Gradle
- Android Quick Tips #5 — Screen C
- Android Quick Tips #8 — How to D
原文by Norman Peitek 翻译by Dexter0218
直入主题,这周会围绕Android的TextView,介绍一些小技巧。
Android TextView
每个Android开发者都用过TextView,可能已经知道下面的一些技巧。但以防万一,都列举出来了:
空字符串 和 Null检查
你是不是很厌倦写下面的代码:
String someString = getStringFromObjectOrApi(): // this is some external dependency
if (someString != null && !someString.isEmpty()) {
// do something with the string, e.g. set on TextView
}
else {
// do something in case the string is null/empty, e.g. hide the TextView
}
有许多外部的库可以让if语句的条件更为简单。但由于Android的TextUtils类包含了isEmpty()方法,那就没有必要用外部库了。使用这个方法可以让代码更易读、易写:
String someString = getStringFromObjectOrApi(): // this is some external dependency
if (!TextUtils.isEmpty(someString)) {
// do something with the string, e.g. set on TextView
}
else {
// do something in case the string is null/empty, e.g. hide the TextView
}
限制TextView的长度匹配屏幕大小
如果你的app从服务器动态加载数据,你应当需要处理好极端数据。如果返回的是null的字符串,将会发生什么?或者返回非常长的字符串呢?如果你直接加载这些字符串,它可能会破环你的整个布局,并且让你的app看起来很糟!一个简单的方法:限制文本在一行内,并在尾部用一个省略号(...)表明不是一个完整的文本。只要在你的TextView布局文件中添加两行就可以实现:
<TextView
...
android:singleLine="true"
android:ellipsize="end"/>
如果一个TextView可以不止一行,但是仍然应该通过使用maxLines,限制其行数。例如,三行以后的文字将被截取:
<TextView
...
android:maxLines="3"
android:ellipsize="end"/>
在屏幕上滚动显示文字
如果喜欢之前的建议,但是我们仍然担心由于被截断了,导致一些重要的内容被隐藏,你可以考虑使用marquee让文字在屏幕上滚动显示。XML文件里的配置非常简单:
<TextView
...
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"/>
使用marquee时要当心,因为你并不希望用户得到像看到90年代的网页一样糟糕体验。
提示:有时marquee在一些子布局中会十分棘手,看看stackoverflow的这个主题找找帮助。
网友评论