Android中的值文件
值文件标签汇总
- string
- string-array
- bool
- integer
- integer-array
- dimen
- declare-styleable
- eat-comment
- attr
- color
- style
- item
- plurals
- array
- fraction
- drawable
string
字符串是最常见的资源文件,例如:
<string name="hello">Hello World</string>
如果该字符串资源不必本地化,这设置起translatable="false"
,例如:
<string name="hello" translatable="false">Hello World</string>
string的特殊字符问题
字符之间的空格用 Space 键是能显示出效果的的,但是字符后面如果需要添加空格,直接 Space 键是不管用的,此时 空格应该用 来表示
" (" 或 ")
' (' 或 ')
& (& 或 &)
lt(<) (< 或 <)
gt(>) (> 或 >)
输入"
应该是\"
或者\"
输入'
应该是\'
或者\'
实际值 | 转译字符 |
---|---|
“ | \” |
‘ | \’ |
@ | \@ |
字符串资源的引用
- xml中引用自定义字符串资源
@string/...
- java中引用自定义字符串资源
R.string.***
- xml中引用框架层的字符串资源
@android:string/...
- java中引用框架层的字符串资源
android.R.string.***
String通配符
格式为%n$s表示字符串,其中n表示第n个要替换的数
%n$d表示整数,%n$f表示浮点数
例如:
string定义
<string name="wildcard_character" >%1$s今年%2$d岁的概率为%3$f</string>
代码中设置
String values = getResources().getString(R.string.wildcard_character,"小明", 22,99.99); tvStringActivityWildcardCharacter.setText(values);
显示效果
小明今年23岁的概率为99.990000
使用html标签
例如实现下划线可以用html的<u></u>
标签
- xml中设置
<string name="underline">这是<u>下划线</u></string>
- 代码中设置
tvStringActivityUnderline.setText(Html.fromHtml("代码设置" + "<u>"+ "下划线" + "</u>"));
string-array
xml中设置
<string-array name="string_array"> <item >"妙蛙种子"</item> <item >"小火龙"</item> <item >"杰尼龟"</item> </string-array>
代码中使用
Resources res = getResources(); String[] array = res.getStringArray(R.array.string_array);
integer-array
<integer-array name="integer_array">
<item>10</item>
<item>20</item>
<item>30</item>
</integer-array>
代码中使用:
Resources res = getResources();
int[] array = res.getIntArray(R.array.integer_array);
dimen
<dimen name="demen1">18.2dp</dimen>
获取值的三种方法,以下三种返回的都是转换为px单位的数字
返回”四舍五入”的int值
getResources().getDimensionPixelSize(R.dimen.demen1);
返回舍去小数点后的int值.
getResources().getDimensionPixelOffset(R.dimen.demen1);
返回浮点数
getResources().getDimension(R.dimen.demen1);
declare-styleable,eat-comment,attr
<eat-comment/>
去除标签
<declare-styleable name="declare_styleable"></declare-styleable>
表示一个属性组
<attr/>
表示具体属性,其中format
表示属性类型
属性类型包括:
值 | 说明 |
---|---|
boolean | 布尔类型 |
color | 颜色 |
dimension | 尺寸 |
enum | 枚举 |
flag | 与 |
float | 浮点型 |
fraction | 百分比 |
integer | 整形 |
reference | 引用 |
string | 字符串 |
其中属性可以通过|
表示多条属性。
例子
<!-- =============================================================== -->
<!-- 去除掉注释 -->
<!-- =============================================================== -->
<eat-comment/>
<declare-styleable name="declare_styleable">
<!-- 名称 -->
<attr name="name" format="reference|string"/>
<!-- 性别 -->
<attr name="sex">
<!-- 男性 -->
<enum name="male" value="1"/>
<!-- 女性 -->
<enum name="female" value="0"/>
</attr>
<!-- 国家 -->
<attr name="country">
<!-- 中国 -->
<flag name="China" value="1"/>
<!-- 美国 -->
<flag name="America" value="2"/>
<!-- 日本 -->
<flag name="Japan" value="3"/>
</attr>
<attr name="grow_up" format="boolean"/>
<attr name="color" format="color"/>
<attr name="salary" format="float"/>
<attr name="age" format="integer"/>
<attr name="fraction" format="fraction"/>
<attr name="dimension" format="dimension"/>
</declare-styleable>
代码中使用
TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.declare_styleable);
String name = typedArray.getString(R.styleable.declare_styleable_name);
int age = typedArray.getInt(R.styleable.declare_styleable_age,18);
int country = typedArray.getInt(R.styleable.declare_styleable_country,0);
int sex = typedArray.getInt(R.styleable.declare_styleable_sex,0);
boolean grow_up = typedArray.getBoolean(R.styleable.declare_styleable_grow_up,false);
int clothescolor = typedArray.getColor(R.styleable.declare_styleable_clothescolor,0xFFFFFFFF);
float dimension = typedArray.getDimension(R.styleable.declare_styleable_dimension,50);
float salary = typedArray.getFloat(R.styleable.declare_styleable_salary,8888.88f);
float fraction = typedArray.getFraction(R.styleable.declare_styleable_fraction,5,10,0.25f);
color,bool,integer,drawable,fraction
<color name="myBackground">#262626</color>
<bool name="bool">true</bool>
<integer name="integer">18</integer>
<drawable name="myDrawable">@drawable/pikaqiu</drawable>
<drawable name="myColor">#ff0000</drawable>
<fraction name="myFraction">15%</fraction>
style
style能够继承于已有的style,有两种继承方法
- name
设置name属性的名称为:继承的style名称+.+style名称
<style name="AppTheme.MyStyle">
<item name="android:background">@color/myBackground</item>
</style>
- parent
使用parent属性指定
<style name="MyStyle" parent="AppTheme">
<item name="android:background">@color/myBackground</item>
</style>
item
type包括anim,animator,array,bool,color,declare-styleable,dimen,drawable,fraction,id,integer,interpolator,menu,mipmap,raw,layout,public,plurals,string,style,transition,xml
例子:
<item name="myItemString" type="string" format="reference|string">自定义</item>
<item name="myItemId" type="id" format="reference|string"/>
使用:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/myItemString"
android:id="@id/myItemId"/>
array
相当于string-array和integer-array结合
<array name="myArray" >
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</array>
plurals
plurals
标签的作用是根据不同的数量返回不同的字符串结果
其中quantity
定义数量,有以下几种zero,one,two,few,many,other等
例子:
<plurals name="numberOfEggs">
<item quantity="one">There is 1 egg</item>
<item quantity="other">There are %d eggs</item>
</plurals>
代码中使用
String str = getResources().getQuantityString(R.plurals.numberOfEggs, 21,2);
`getQuantityString(@PluralsRes int id, int quantity, Object... formatArgs)
有三个参数,第一个为引用plurals
,第二个为数量,即根据此参数返回不同的字符串,第三个参数即String的通配符替换,替换字符串中%d,%s,%f等