歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android實戰技巧之文本與布局

Android實戰技巧之文本與布局

日期:2017/3/1 10:32:14   编辑:Linux編程

別看這個標題挺大,其實這次要說的只是3個小技巧。

1、字符串資源裡變量替換

工作中是拒絕硬編碼的,Android裡會把一些字符串等放在xml中當做資源使用,如項目中values下的strings.xml列出了app_name.

有些情況是這樣的,程序中要使用的字符串如第345頁,345是變量,那麼我們不可能用兩個字符串資源如

[html]

  1. <string name="di"></string>
  2. <string name="page"></string>

在程序中拼接字符串。那麼我們可能會想,在我們學習C的時候,有%s這樣的神奇的符號,可以替換變量的格式化操作符。

其實,在android中也有這樣的東西,那就是XLIFF,全稱叫XML本地化數據交換格式,英文全稱XML Localization Interchange File Format。

用法也是很簡單的,如

[html]

  1. <string name="page">第%1$s頁</string>

程序中只要給變量賦值就可以了,如

[java]

  1. String page = getString(R.string.page,"345");
那麼,要是有多個變量呢,如第345頁24行?這也好辦,如下:

[html]

  1. <string name="page">第%1$s頁%2$s行</string>
[java]
  1. String page = getString(R.string.page,"345","24");
2、TextView中設置多種字體大小

這是項目中經常遇到的,比如UI是這樣的:

Android實戰技巧之文本與布局

像這樣的兩種字體,要如何處理呢?需要用到android.text命名空間下的一些與spannable相關的類和接口。例子如:

[java]

  1. String text = "Android實戰技巧之文本與布局";
  2. int start = text.indexOf('之');
  3. int end = text.length();
  4. Spannable textSpan = new Spannable(text);
  5. textSpan.setSpan(new AbsoluteSizeSpan(20),0,start,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
  6. textSpan.setSpan(new AbsoluteSizeSpan(12),start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
這個textSpan就是你想要的。

3、TextView的超鏈接

這個很簡單,在xml中屬性autoLink=“all”。

程序中TextView.setAutoLink(Linkify.ALL);

說下參數:

Linkify.EMAIL_ADDRESS -- 僅識別出TextView中的Email在址,標識為超鏈接,點擊後會跳到Email,發送郵件給此地址
Linkify.PHONE_NUMBERS -- 僅識別出TextView中的電話號碼,標識為超鏈接,點擊後會跳到Dialer,Call這個號碼
Linkify.WEB_URLS-- 僅識別出TextView中的網址,標識為超鏈接,點擊後會跳到Browser打開此URL
Linkify.ALL -- 這個選項是識別出所有系統所支持的特殊Uri,然後做相應的操作

4、布局中只在界面底部

在大部分的android程序中,都會發現一個底部的菜單欄。這通常是一個線性布局加一些按鈕。如何讓其始終在底部,無論是哪個分辨率呢?

這要用到關系布局的屬性

[html]

  1. android:layout_alignParentBottom="true"
在關系布局內部,如果把此屬性設置true,就會在關系布局的底部了。

這個用途還是很廣泛的。

Copyright © Linux教程網 All Rights Reserved