Menu资源
-
file location:
-
res/menu/filename.xml
The filename will be used as the resource ID.
compiled resource datatype:
-
Resource pointer to a
Menu
(or subclass) resource.
resource reference:
-
In Java:
R.menu.filename
In XML:@[package:]menu.filename
-
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@[+][package:]id/resource_name" android:title="string" android:titleCondensed="string" android:icon="@[package:]drawable/drawable_resource_name" android:onClick="method name" android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"] android:actionLayout="@[package:]layout/layout_resource_name" android:actionViewClass="class name" android:actionProviderClass="class name" android:alphabeticShortcut="string" android:numericShortcut="string" android:checkable=["true" | "false"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer" /> <group android:id="@[+][package:]id/resource name" android:checkableBehavior=["none" | "all" | "single"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer" > <item /> </group> <item > <menu> <item /> </menu> </item> </menu>
eg 1:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/csubmenu3"
android:showAsAction="always"
android:title="多选菜单">
<menu>
<group android:checkableBehavior="all" >
<item android:title="子菜单1"/>
<item android:title="子菜单2"/>
<item android:title="子菜单3"/>
</group>
</menu>
</item>
</menu>
eg:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu1"
android:showAsAction="always"
android:title="菜单1"/>
<item
android:id="@+id/menu2"
android:showAsAction="always"
android:title="菜单2"/>
<item
android:id="@+id/csubmenu3"
android:showAsAction="always"
android:title="多选菜单">
<menu>
<group android:checkableBehavior="all" >
<item android:title="子菜单1"/>
<item android:title="子菜单2"/>
<item android:title="子菜单3"/>
</group>
</menu>
</item>
</menu>
重写:
public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.example_menu, menu); return true; }
字符串资源String
1、String
-
file location:
-
res/values/filename.xml
(一般取名为strings.xml)
The filename is arbitrary. The<string>
element'sname
will be used as theresource ID.
compiled resource datatype:
-
Resource pointer to a
String
.
resource reference:
-
In Java:
R.string.string_name
In XML:@string/string_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="string_name" >text_string</string> </resources>
2、数组String Array
-
file location:
-
res/values/filename.xml
(一般取名为strings.xml)
The filename is arbitrary. The<string-array>
element'sname
will be used as theresource ID.
compiled resource datatype:
-
Resource pointer to an array of
String
s.
resource reference:
-
In Java:
R.array.string_array_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="string_array_name"> <item >text_string</item> </string-array> </resources>
Java代码: Resources res =getResources()
; String[] planets = res.getStringArray
(R.array.planets_array);
3、数量级quantity strings
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<plurals>
element'sname
will be used as theresource ID.
resource reference:
-
In Java:
R.plurals.plural_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <plurals name="plural_name"> <item quantity=["zero" | "one" | "two" | "few" | "many" | "other"] >text_string</item> </plurals> </resources>
eg:
<plurals name="plural_name">
<item quantity="one">One Song</item>
<item quantity="other">%d Song</item>
</plurals>
Resources res = getResources();
String songsFound = res
.getQuantityString(R.plurals.plural_name, 2, 1);
getQuantityString()方法时,如果字符串包含数字格式化串,则需要传递2个count参数,第一个数是选择合适的复数字符串,第二个数参数插入占位符%d中。如果(R.plurals.plural_name, 1, 1),则选择的字符串是One Song,与第二个数无关;当第一个数大于1时,第一个数设为x,第二个数设为y,则输出的y Song。
4、字符串资源格式化和样式
符号:
<string name="good_example">"This'll work"</string> <string name="good_example_2">This\'ll also work</string> <string name="bad_example">This doesn't work</string><!-- 格式不对,用双引号或者转义符号--> <string name="bad_example_2">XML don't work</string><!-- 格式不对,用双引号或者转义符号-->
格式化:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.Now you friend %3$s is sending %4$d messages to you!</string>此例中存在四个参数:%1$s是个字符串,%2$d 是个数字,%3$s是个字符串,%4$d 是个数字,其中%x$d代表第x个参数。在应用程序中可以用如下方式用参数来格式化字符串:
Resources res = getResources();
// Hello, %1$s! You have %2$d new messages.Now you friend %1$s is
// sending %2$d messages to you!
String agrs1 = "HostName";
int agrs2 = 12;
String agrs3 = "FriendName";
int agrs4 = 6;
String text = String.format(res.getString(R.string.welcome_messages),
agrs1, agrs2, agrs3, agrs4);//
Log.d("huang", text);
// Hello, HostName! You have 12 new messages.Now you friend FriendName is sending 6 messages to you!
使用HTML标签:
可以用HTML 标记来为字符串加入样式,在字符串支持<b>/<u>/<i>,分别代表:
支持以下HTML元素:
- ·< b>文本加粗bold。
- ·< i>文本变斜体italic。
- ·< u>文本加下划线underline。 如:
-
<string name="testhtml">Hello,<b>Welcome to NewYork.</b> My<u> name is Kagoy.</u>Today <i>is very nice.</i>This is way please.</string>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/testhtml" />
有时可能要创建一个样式化的文本资源,并可作为格式化串使用。通常这不能生效,因为 String.format(String,Object...)方法会去除字符串内的所有的样式信息,解决方法是写入一段转义后的HTML标记,然后在格式化后再用 fromHtml(String)恢复出这些样式。
1.将样式化的文本资源存储为转义后的HTML字符串:
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>2.然后,按照通常方式格式化字符串,并调用fromHtml(String)把HTML文本转换成带样式的文本
Resources res = getResources()
;
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
因为fromHtml(String)方法会格式化所有的HTML内容,所以要确保用htmlEncode(String)对带格式化文本的字符串内所有可能的HTML字符进行转义。比如,如果要把可能包含诸如“<”或“&”等字符的串作为参数传给String.format(),那么在格式化之前必须对这些字符进行转义。格式化之后再把字符串传入fromHtml(String),这些特殊字符就能还原成本来意义了。例如:
String escapedUsername = TextUtil.htmlEncode
(username);//解析html标签 Resources res =getResources()
; String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, mailCount); CharSequence styledText = Html.fromHtml(text); eg:String agrs1 = "<a href='www.baidu.com'>HostName</a>"; int agrs2 = 12; String escapedUsername = TextUtils.htmlEncode(agrs1); Log.d("huang", escapedUsername);// a // href='www.baidu.com'>HostName</a> String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, agrs2); CharSequence styledText = Html.fromHtml(text); text1.setText(styledText);怎么让其识别其他的HTML标签???
样式Style
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The element'sname
will be used as the resource ID.
resource reference:
-
In XML:
@[package:]style/style_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="style_name" parent="@[package:]style/style_to_inherit"> <item name="[package:]style_property_name" >style_value</item> </style> </resources>
-
<?xml version="1.0" encoding="utf-8"?> <EditText style="@style/CustomText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, World!" />
Bool
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<bool>
element'sname
will be used as the resourceID.
resource reference:
-
In Java:
R.bool.bool_name
In XML:@[package:]bool/bool_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
Resources res =XML:getResources()
; boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);
<ImageView android:layout_height="fill_parent" android:layout_width="fill_parent" android:src="@drawable/logo" android:adjustViewBounds="@bool/adjust_view_bounds" />
color
-
file location:
-
res/values/colors.xml
The filename is arbitrary. The<color>
element'sname
will be used as theresource ID.
resource reference:
-
In Java:
R.color.color_name
In XML:@[package:]color/color_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
dimension
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<dimen>
element'sname
will be used as theresource ID.
resource reference:
-
In Java:
R.dimen.dimension_name
In XML:@[package:]dimen/dimension_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
ID
-
file location:
-
res/values/filename.xml
The filename is arbitrary.
resource reference:
-
In Java:
R.id.name
In XML:@[package:]id/name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
integer
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<integer>
element'sname
will be used as theresource ID.
resource reference:
-
In Java:
R.integer.integer_name
In XML:@[package:]integer/integer_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
integer array
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<integer-array>
element'sname
will be used as theresource ID.
compiled resource datatype:
- Resource pointer to an array of integers. resource reference:
-
In Java:
R.array.integer_array_name
In XML:@[package:]array.integer_array_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
typed array
-
file location:
-
res/values/filename.xml
The filename is arbitrary. The<array>
element'sname
will be used as theresource ID.
compiled resource datatype:
-
Resource pointer to a
TypedArray
.
resource reference:
-
In Java:
R.array.array_name
In XML:@[package:]array.array_name
syntax:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources>
Resources res =getResources()
; TypedArray icons = res.obtainTypedArray
(R.array.icons); Drawable drawable = icons.getDrawable
(0); TypedArray colors = res.obtainTypedArray
(R.array.colors); int color = colors.getColor
(0,0);