Android開發-TextViev XML屬性(一)
Android開發-TextViev(一)
TextView是Android中最常用的控制元件之一,大部分時候大家只使用了一些簡單的功能。比如:顯示一個字串,顯示一個HTML片段等。我們一起來詳細瞭解一下TextView。
android:autoLink
Constant | Value | Description |
---|---|---|
none | 0x00 | Match no patterns (default). |
web | 0x01 | Match Web URLs. |
email | 0x02 | Match email addresses. |
phone | 0x04 | Match phone numbers. |
map | 0x08 | Match map addresses. |
all | 0x0f | Match all patterns (equivalent to web|email|phone|map). |
xml片段
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="phone"
android:text="13888888888" />
執行效果
Tips
點選電話號碼後跳轉到撥號頁面,如果不是電話號碼則無效。
原始碼分析
/**
* 掃描提供的常量,新增對應的link。(這裡以phone為例)
*/
public static final boolean addLinks(Spannable text, int mask) {
if (mask == 0) {
return false;
}
URLSpan[] old = text.getSpans(0, text.length(), URLSpan.class);
for (int i = old.length - 1; i >= 0; i--) {
text.removeSpan(old[i]);
}
ArrayList<LinkSpec> links = new ArrayList<LinkSpec>();
// 這裡只保留了PHONE型別
if ((mask & PHONE_NUMBERS) != 0) {
gatherTelLinks(links, text);
}
pruneOverlaps(links);
if (links.size() == 0) {
return false;
}
for (LinkSpec link: links) {
applyLink(link.url, link.start, link.end, text);
}
return true;
}
/**
* 在URL中增加"tel:",點選後跳轉到撥打電話頁面
*/
private static final void gatherTelLinks(ArrayList<LinkSpec> links, Spannable s) {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Iterable<PhoneNumberMatch> matches = phoneUtil.findNumbers(s.toString(),
Locale.getDefault().getCountry(), Leniency.POSSIBLE, Long.MAX_VALUE);
for (PhoneNumberMatch match : matches) {
LinkSpec spec = new LinkSpec();
spec.url = "tel:" + PhoneNumberUtils.normalizeNumber(match.rawString());
spec.start = match.start();
spec.end = match.end();
links.add(spec);
}
}
android:autoText
從API3以後不建議使用android:autoText,使用inputType替代。
android:breakStrategy
Constant | Value | Description |
---|---|---|
simple | 0 | Line breaking uses simple strategy. |
high_quality | 1 | Line breaking uses high-quality strategy, including hyphenation. |
balanced | 2 | Line breaking strategy balances line lengths. |
android:bufferType
Constant | Value | Description |
---|---|---|
normal | 0 | Can return any CharSequence, possibly a Spanned one if the source text was Spanned. |
spannable | 1 | Can only return Spannable. |
editable | 2 | Can only return Spannable and Editable. |
待續···
相關文章
- Android XML 屬性AndroidXML
- Android開發EditText屬性Android
- XML屬性XML
- Android開發之屬性動畫Android動畫
- XML 屬性概述XML
- Android開發 - 檢視佈局屬性解析Android
- Android屬性動畫詳解(一),屬性動畫基本用法Android動畫
- XML DOM – 屬性和方法概述XML
- iOS開發中一些常用的屬性iOS
- 給自定義View新增xml屬性ViewXML
- XMl 檔案屬性的讀取XML
- 開發一個屬性名提示友好的Vue元件Vue元件
- android屬性動畫Android動畫
- android:screenOrientation屬性Android
- Android 《CardView 屬性》AndroidView
- Android開發Style的使用,控制元件共同屬性的抽取Android控制元件
- 軟體開發的自然屬性
- android:佈局引數,控制元件屬性及各種xml的作用Android控制元件XML
- Android 屬性動畫(二)Android動畫
- Android 相關屬性Android
- Android屬性之excludeFromRecentsAndroid
- Android自定義屬性Android
- Android介面基本屬性Android
- Android開發自定義View之滑動按鈕與自定義屬性AndroidView
- 【Android】神奇的android:clipChildren屬性Android
- Android開商品屬性篩選與商品篩選Android
- Hibernate 對映xml中的屬性型別XML型別
- Android 5.0以下XML定義的drawable不識別?attr/屬性的解決思路AndroidXML
- iOS開發-屬性的記憶體管理iOS記憶體
- Android 屬性動畫實戰Android動畫
- Android 動畫之屬性動畫Android動畫
- 如何理解Android屬性動畫Android動畫
- Android EditText 屬性彙總Android
- Android之佈局屬性Android
- android佈局屬性大全Android
- Android屬性設定android:noHistory="true"Android
- Android---Android:windowSoftInputMode屬性詳解AndroidWindows
- Android NDK開發之旅11 JNI JNI資料型別與方法屬性訪問Android資料型別