Android资源类型二

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>
根元素menu可有item和group,也就是说不管是子菜单还是菜单,item和group他们的父节点都是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's name 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's name will be used as theresource ID.
compiled resource datatype:
Resource pointer to an array of Strings.
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's name 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&apos;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 &lt;b>%2$d new messages&lt;/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=&#39;www.baidu.com&#39;&gt;HostName&lt;/a&gt;

        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's name 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's name 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>
Java:

Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
XML:

<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's name 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's name 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's name 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's name 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's name 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>
eg:

<?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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值