设置操作栏标题和副标题

Adi*_*lik 59 android android-widget android-layout

我想在编译时设置我的操作栏的标题和副标题.我有办法这样做:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
Run Code Online (Sandbox Code Playgroud)

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

我想要实现这个目标:

在此输入图像描述

编辑:

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

A--*_*--C 90

你可以做这样的事情来编码这两个版本:

/**
 * 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"); 
  }
}
Run Code Online (Sandbox Code Playgroud)

然后调用actionBarSetup()onCreate().将if只运行在新的Android版本和代码@TargetApi允许代码进行编译.因此,它使旧版和新版API都安全.

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

编辑

请注意,当最初编写此答案时,该答案ActionBarSherlock已被弃用,这是首选兼容性解决方案.

如今,谷歌的appcompat-v7图书馆提供相同的功能,但谷歌支持(并积极更新).想要实施ActionBar必须的活动:

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

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


Rod*_*eco 14

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

<activity 
    . . .
          android:label="string resource" 
    . . .
</activity>
Run Code Online (Sandbox Code Playgroud)

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


Pac*_*gmi 9

试试这个:

android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
Run Code Online (Sandbox Code Playgroud)


小智 5

还有另一个选项,没有人评论,支持库V7由谷歌实施ActionBarSupport,ActionBar从Android 2.2到最后一个兼容.
如果您更改ActionBar此功能,则可以getSupportActionBar().setTitle("")在所有Android版本上执行此操作.