67

我想在编译之前设置我的操作栏的标题和副标题。我有办法做到这一点:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");

但我不想在运行时这样做。是否有任何 xml 文件或我可以指定这些标题的任何位置?

我正在努力实现这一目标:

在此处输入图像描述

编辑:

我希望它在 xml 中的原因是我希望我的应用程序在 API 级别 8 中得到支持。并且方法 getActionBar() 至少在级别 11 上受支持。

4

12 回答 12

94

您可以执行以下操作来为这两个版本编写代码:

/**
 * Sets the Action Bar for new Android versions.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar ab = getActionBar();
    ab.setTitle("My Title");
    ab.setSubtitle("sub-title"); 
  }
}

然后打actionBarSetup()进来onCreate()。仅在新的ifAndroid 版本上运行代码,并且@TargetApi允许代码编译。因此,它对新旧 API 版本都是安全的。

或者,您也可以使用ActionBarSherlock请参阅编辑),这样您就可以在所有版本上使用 ActionBar。您将不得不做一些更改,例如让您的活动扩展SherlockActivity和调用getSupportActionBar(),但是,这是一个非常好的全局解决方案。

编辑

请注意,最初编写此答案时ActionBarSherlock,已弃用的 是首选兼容性解决方案。

如今,Google 的appcompat-v7提供了相同的功能,但由 Google 支持(并积极更新)。想要实施ActionBar必须的活动:

  • 延长AppCompatActivity
  • 使用Theme.AppCompat衍生物

ActionBar要使用此库获取实例,请使用恰当命名的getSupportActionBar()方法。

于 2013-01-12T20:42:43.653 回答
16

操作栏的标题可以在 AndroidManifest 中,这里:

<activity 
    . . .
          android:label="string resource" 
    . . .
</activity>

android:label 活动的用户可读标签。当必须向用户表示活动时,标签会显示在屏幕上。它通常与活动图标一起显示。如果未设置此属性,则使用为整个应用程序设置的标签(请参阅元素的标签属性)。活动的标签(无论是在此处设置还是由元素设置)也是所有活动的意图过滤器的默认标签(请参阅元素的标签属性)。标签应设置为对字符串资源的引用,以便它可以像用户界面中的其他字符串一样本地化。但是,为了方便您开发应用程序,也可以将其设置为原始字符串。

于 2013-01-12T21:45:13.757 回答
13

试试这个:

android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
于 2015-12-01T08:48:26.530 回答
5

还有另一个没有人评论的选项,来自支持库 V7 是由 Google 实现的ActionBarSupport,它ActionBar与 Android 2.2 兼容。
如果您更改ActionBar此设置,您可以getSupportActionBar().setTitle("")在所有 Android 版本上执行此操作。

于 2013-12-29T13:59:02.143 回答
3

没有!您必须在运行时执行此操作。

如果你想让你的应用向后兼容,那么只需检查设备 API 级别。如果高于11,那么你可以摆弄ActionBar并设置字幕。

if(Integer.valueOf(android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}
于 2013-01-12T19:51:28.783 回答
3
supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"
于 2019-06-04T11:50:44.643 回答
3
    <activity android:name=".yourActivity" android:label="@string/yourText" />

将此代码放入您的 android 清单文件中,它应该将操作栏的标题设置为您想要的任何内容!

于 2016-04-20T06:41:12.790 回答
3

尝试这个

只需转到您的清单文件。并且您已经在清单文件中定义了每个活动的标签。

<activity
        android:name=".Search_Video"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
    </activity>

这里改变

android:label="@string/your_title"

于 2016-12-24T08:00:31.603 回答
2

尝试这个:

在 strings.xml 添加您的标题和副标题...

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));
于 2013-01-12T19:57:13.947 回答
1

这是 Kotlin 中微不足道的单行代码

supportActionBar?.title = getString(R.string.coolTitle)

于 2017-08-20T18:00:46.280 回答
0

对于活动,您可以使用此方法在清单中指定副标题以及标题。

显现:

<activity
    android:name=".MyActivity"
    android:label="@string/my_title"
    android:description="@string/my_subtitle">
</activity>

活动:

try {
    ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    //String title = activityInfo.loadLabel(getPackageManager()).toString();
    int descriptionResId = activityInfo.descriptionRes;
    if (descriptionResId != 0) {
        toolbar.setSubtitle(Utilities.fromHtml(getString(descriptionResId)));
    }
}
catch(Exception e) {
    Log.e(LOG_TAG, "Could not get description/subtitle from manifest", e);
}

这样,您只需要指定一次标题字符串,就可以在它旁边指定字幕。

于 2017-05-09T21:25:06.257 回答
0

您可以使用在操作栏中设置标题AndroidManifest.xml。将标签添加到activity

<activity
            android:name=".YourActivity"
            android:label="Your Title" />
于 2017-05-26T06:29:20.073 回答