【问题标题】:How can I get my Layout file to show its label as others do?如何让我的布局文件像其他人一样显示其标签?
【发布时间】: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


【解决方案1】:

这是“按设计”并且完全合乎逻辑。

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
    . . .

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 2013-11-05
    • 2012-12-30
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多