加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android实战方法之文本与布局

发布时间:2021-11-24 14:02:51 所属栏目:教程 来源:互联网
导读:别看这个标题挺大,其实这次要说的只是3个小技巧。 1、字符串资源里变量替换 工作中是拒绝硬编码的,Android里会把一些字符串等放在xml中当做资源使用,如项目中values下的strings.xml列出了app_name. 有些情况是这样的,程序中要使用的字符串如第345页,345是

别看这个标题挺大,其实这次要说的只是3个小技巧。
 
1、字符串资源里变量替换
 
工作中是拒绝硬编码的,Android里会把一些字符串等放在xml中当做资源使用,如项目中values下的strings.xml列出了app_name.
 
有些情况是这样的,程序中要使用的字符串如第345页,345是变量,那么我们不可能用两个字符串资源如
 
[html]
<string name="di">第</string>  
<string name="page">页</string>  
在程序中拼接字符串。那么我们可能会想,在我们学习C的时候,有%s这样的神奇的符号,可以替换变量的格式化操作符。
 
其实,在android中也有这样的东西,那就是XLIFF,全称叫XML本地化数据交换格式,英文全称XML Localization Interchange File Format。
 
用法也是很简单的,如
 
[html]
<string name="page">第%1$s页</string>  
程序中只要给变量赋值就可以了,如
 
[java]
String page = getString(R.string.page,"345");  
那么,要是有多个变量呢,如第345页24行?这也好办,如下:
[html]
<string name="page">第%1$s页%2$s行</string>  
[java]
String page = getString(R.string.page,"345","24");  
2、TextView中设置多种字体大小
这是项目中经常遇到的,比如UI是这样的:
 
Android实战技巧之文本与布局
 
像这样的两种字体,要如何处理呢?需要用到android.text命名空间下的一些与spannable相关的类和接口。例子如:
 
 
[java]
String text = "Android实战技巧之文本与布局";  
int start = text.indexOf('之');  
int end = text.length();  
Spannable textSpan = new Spannable(text);  
textSpan.setSpan(new AbsoluteSizeSpan(20),0,start,Spannable.SPAN_INCLUSIVE_INCLUSIVE);  
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]
android:layout_alignParentBottom="true"  
在关系布局内部,如果把此属性设置true,就会在关系布局的底部了。
这个用途还是很广泛的。

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!