String引用去警告,以及一些事半功倍的用法

概述

最近开始闲下来,想要做一件事情,就是修复android studio上的一些警告,也让自己的代码更加规范,先从简单的找起。今天就把xml中关于字符串的警告去除了吧。

不想在string.xml中写那么多文字怎么办

刚开始做安卓的时候,都是直接在布局文件中写:

android:text="fuck"

但是写完了之后


AndroidStudio出现了一根黄色的小线,有些人可能就不管了,看着这个颜色,兴致勃然,继续写其他页面,但是对于一个有代码洁癖的人,实在忍不了,而且这个官方规范让你不要这么写啊,怎么办,按照他的要求改吧,老老实实在string.xml中找个坑位写一段文字,然后回来再引用添加。

但是。。。我真的有时候只是想要测试一下控件的显示效果,根据设计稿写个页面,用文字暂时填充一下,看下预览效果,来回切换写string.xml实在太TM麻烦了,怎么办?不要方,有办法:

首先在layout根布局加一行(如果没有自动生成的话):

xmlns:tools="http://schemas.android.com/tools"

接着在你想要添加文字的控件内添加:

tools:hint="fuck"

没有警告,没有提示,干干净净的,世界都变美好了。

我已经在string.xml中写了,怎么又出现了黄色的警告

有时候写一些符号,总是会出现警告,比如:



怎么办,直接按照它的要求来吧,替换就是了,这个时候碰到一个有些恶心的问题,我想复制,先按Ctrl+F11,然后鼠标选中一松开提示框就消失了,坑爹,只好在选中后鼠标一直按住不松开,ctrl+C再松开,就可以了,(不知道有没有其他办法复制这种警告提示,求告知)

Quantity Strings(Plurals)复数的用法

直接上代码:

  <plurals name="countOfGirlfriend">
      <item quantity="zero">no girlfriend</item>
      <item quantity="one">one girlfriend</item>
      <item quantity="other">many girlfriends</item>
  </plurals>

然后在我们代码中获取数量并填入就可以了:

  int count = getGirlfriends();
  String girlfriendCount = getResources().getQuantityString(R.plurals.countOfGirlfriend);
  tvCount.setText(girlfriendCount);

quantity的有效值,可见这张表



(来自谷歌官方文档)

然并卵,我在代码中怎么传count的大小,返回的都是many girlfriends(幸福的烦恼,渣男的代表),再查看文档时发现,某些语言(如中文)根本不做这些语法区分,因此您获取的始终是 other 字符串。而且上面的截图上面也清楚的提示了。所以,在中文的环境中基本用不着它。

String.format(String,Object...)的用法

有很多时候,接口返回的数据只是一个int或者double类型,但是我们填充时候,前面或者后面的字符串都是固定的,类似于填空。什么意思,比如,你想要输出一部降龙十八掌的招数,你就可以这么干(降龙十八掌的命名太难,求支招):

  <string name="xlsbz">降龙十八掌第%1$d式,%2$s</string>

%1d 表示一个十进制数字,而 %2s 表示一个字符串;1和2表示代码中传参的位置顺序。

这时候,接口返回数据了,你就可以这么做了

  Resource res = getResources();
  String text = String.format(res.getString(R.string.xlsbz),number,name);
  只需要传入第几式和名字就可以输出完整输出降龙十八掌的所有招式了,比如1,亢龙有悔;2,飞龙在天...

平时用到最多的就是字符串和十进制的整数了,当然还有其他一些常用转换符,如下:


(截图来源,JAVA字符串格式化-String.format()的使用)

关于String.format()中转换符的标志(即%1d中的),也可以参考截图来源的博客,对我来说,项目中基本只用了$

HTML标记的用法

我们在很多注册界面都会有一个《同意...协议》,有的要求要加下划线,我是这么设置的;

<string name="agree_protocol">《<u>同意卖身契协议<u>》<string>

除了下划线,还有粗体<b>(粗体)和<i>(斜体)等HTML元素的支持。

如果我想要输入或显示出来的本来需要包含了<b>这些特殊字符怎么办,看官方文档,描述的非常详细;


HTML中还有一个不为人知的用法,比如一个TextView的文字,需要输入七个文字“红橙黄绿青蓝紫”,但是每个文字对应自己的颜色,看图:


我们第一反应估计是,冲着产品说:“哥们,你直接给我一张图吧,这太麻烦了”;要是产品说不行,怎么办?我们只能自给自足了,好了,那就直接轮流取文字的下标,用ForegroundColorSpan一个文字一个文字的设置颜色,真心太麻烦了,怎么办,有办法!

   <string name="colors"   <![CDATA[<font color=red>红</font><font color=\'#ff7f00\'>橙</font><font color=yellow>黄</font><font color=green>绿</font><font color=cyan>青</font><font color=blue>蓝</font><font color=purple>紫</font>]]></string>      

写完后,再到代码中进行设置:

  tv.setText(Html.fromHtml(getString(R.string.colors)));

搞定,轻松加愉快!

两点需要解释一下:
1.关于CDATA的解释:

1)所有 XML 文档中的文本均会被解析器解析;
只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

2)CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

3)CDATA 部分不能包含字符串 "]]>";也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

这在w3school文档中有详细解释XML CDATA

2.color='#ff7f00' 中的转义,直接看官方文档


清晰明了,一目了然!

基本上,项目中可以用到的就是这些了,花点时间写下来,也算是加深自己的理解吧,其实基本上就是按照谷歌官方文档,结合自己碰到的问题,还有一些博客的参考!希望有猿人看到可以提醒一下,补全一些!

参考文档和博客

写博客确实不容易,虽然是从简单的方面入手,但也希望可以坚持写,要不然闲下来,很容易陷入程序猿的中年危机,哈哈哈!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容