3.App Resources-Resource Types/String Resources

1. String

//saved at res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello!</string> </resources>
//This layout XML applies a string to a View:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

  This application code retrieves a string:

String string = getString(R.string.hello);

2. String Array

//saved at res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>

  This application code retrieves a string array:

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

3. Formatting and Styling

  3.1 Escaping apostrophes and quotes

//good
<string name="good_example">"This'll work"</string>
<string name="good_example_2">This'll also work</string>
//bad
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don&apos;t work</string>

  3.2 Formatting strings

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

  In this example, the format string has two arguments:

     %1$s is a string and %2$d is a decimal number.

    You can format the string with arguments from your application like this:

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

  3.3 Styling with HTML markup

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome to <b>Android</b>!</string>
</resources>

  <b> for Bold text

  <i>  for italic text

  <u> for underline text

  Sometimes you may want to create a styled text resource that is also used as a format string. Normally, this won't work

  <1>Store your styled text resource as an HTML-escaped string:

//In this formatted string, a <b> element is added. Notice that the opening bracket is HTML-escaped, using the &lt; notation.
<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>

  <2>Then format the string as usual, but also call fromHtml(String) to convert the HTML text into styled text:

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);

  <3>Particularly. if you'll be passing a string argument to String.format() that may contain characters such as "<" or "&", then they must

    be escaped before formatting, so that when the formatted string is passed through fromHtml(String), the characters come out the way

    they were originally written. For example:

String escapedUsername = TextUtil.htmlEncode(username);

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, mailCount);
CharSequence styledText = Html.fromHtml(text);

  

  

原文地址:https://www.cnblogs.com/iMirror/p/4071351.html