如何让我的布局文件像其他人一样显示其标签?

时间:2014-05-19 17:58:20

标签: android android-layout android-activity localizable.strings

在大多数情况下,添加一个Activity会创建一个相应的Layout(xml)文件,该文件在布局的操作栏中显示“[ActivityName]”(我不知道这是否是正确的术语)。

然而,在一个案例中,情况并非如此。

使用AndroidManifest.xml:

<activity
    android:name="hhs.app.VerifyCodeActivity"
    android:label="@string/title_activity_verify_code" >
</activity>
<activity
    android:name="hhs.app.DeliveryItemActivity"
    android:label="@string/title_activity_delivery_item" >
</activity>

... VerifyCodeActivity布局的操作栏上的措辞是appname,而不是Activity名称(对于DeliveryItemActivity的相应布局文件显示活动名称)。

VerifyCodeActivity布局应该说“验证码”,因为它位于\ values \ strings.xml文件中:

<string name="title_activity_verify_code">Verify Code</string>

抓住吸管(与其他代码不同),我在AndroidManifest.xml中对此进行了更改:

android:name=".VerifyCodeActivity"

......对此:

android:name="hhs.app.VerifyCodeActivity"

......但没有区别。发生了什么/如何解决这个问题?

更新

这就是我所说的 - 一个活动显示了我想要的标题:

enter image description here

其他人没有,比如这个:

enter image description here

我看不出为什么第二个不起作用(它显示应用程序名称(“HHS”)而不是特定于活动的字符串)。同样,标签都在AndroidManifest.xml中设置,如上所示...... ???

更新2

好的,现在很明显:AndroidManifest.xml将Activity的标签设置为特定字符串(title_activity_settings),该字符串位于strings.xml中:

<string name="title_activity_settings">HHS Settings</string>

...但是在设计时这对Activity的布局文件没有影响,因为布局文件在那时没有与Activity的连接。只有在调用Activity之后才建立连接:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
}

然后,在运行时(或者在我的情况下为“模拟时间”),字符串应用于Activity的Action Bar。

1 个答案:

答案 0 :(得分:0)

这是“按设计”,完全符合逻辑。

AndroidManifest.xml将Activity的标签设置为特定的字符串(title_activity_settings),该字符串位于strings.xml中:

<string name="title_activity_settings">HHS Settings</string>

...但是在设计时这对Activity的布局文件没有影响,因为布局文件在那时没有与Activity的连接。只有在调用Activity之后才建立连接:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
}

然后,只有在AndroidManifest.xml中设置的字符串应用于Activity的Action Bar。

在一种情况下,字符串在设计时也显示的原因是布局文件中的原因:

tools:context="hhs.app.DeliveryItemActivity"

在上下文中:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="hhs.app.DeliveryItemActivity">

    <TableRow
    . . .