【发布时间】:2014-05-19 17:58:19
【问题描述】:
在大多数情况下,添加一个 Activity 会创建一个相应的 Layout (xml) 文件,该文件会在 Layout 的操作栏中显示“[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 布局的操作栏上的措辞是应用名称,而不是 Activity 名称(为 DeliveryItemActivity 的相应布局文件显示的 Activity 名称)。
VerifyCodeActivity 布局应该显示“验证代码”,因为它位于 \values\strings.xml 文件中:
<string name="title_activity_verify_code">Verify Code</string>
抓住稻草(与其他代码不同的任何东西),我在 AndroidManifest.xml 中进行了更改:
android:name=".VerifyCodeActivity"
...到这个:
android:name="hhs.app.VerifyCodeActivity"
...但没有区别。这是怎么回事/我该如何解决?
更新
这就是我要说的——一个 Activity 显示了我想要的标题:
其他的没有,比如这个:
我不明白为什么第二个不起作用(它显示应用程序名称(“HHS”)而不是特定于 Activity 的字符串)。同样,标签都是在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 的操作栏。
【问题讨论】:
-
xml 看起来正确。其他东西必须覆盖标题栏。风格还是主题?或者一些明确隐藏它的java代码或一些xml代码?或者某些代码使用与背景颜色相同的文本颜色,从而使标题不可见?
-
必须有一种方法让它在设计时显示(毕竟,其他的也有——这对 Activity/Layout 有什么不同?)
-
@StephanBranczyk:我更新了我的问题以表明它确实在那里显示了 appName(而不是 Activity 名称)。不过,我没有做任何事情来设置它 - 我也没有做任何事情来设置其他 Activity 的标签,那么为什么它们不一致呢?
-
这是一个新问题吗?您是否添加了一些首次开发应用程序时没有的新功能?比如,你开始使用全息主题了吗?
-
(略无关)标题栏在Android中被称为“Action Bar”developer.android.com/design/patterns/actionbar.html
标签: android android-layout android-activity localizable.strings