设置操作栏标题和副标题

时间:2013-01-12 19:37:21

标签: android android-layout android-widget

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

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

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

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

enter image description here

编辑:

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

12 个答案:

答案 0 :(得分:89)

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

/**
 * 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()if仅在新的Android版本上运行代码,@TargetApi允许代码编译。因此,它使旧版和新版API都安全。​​

或者,您也可以使用ActionBarSherlock参见编辑),这样您就可以在所有版本上使用ActionBar。您必须进行一些更改,例如让您的活动延长SherlockActivity并调用getSupportActionBar(),但这是一个非常好的全球解决方案。

修改

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

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

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

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

答案 1 :(得分:13)

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

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

<强>机器人:标签   用户可读的活动标签。标签是   当活动必须表示给用户时显示在屏幕上。   它通常与活动图标一起显示。如果这个属性   如果未设置,则使用为整个应用程序设置的标签   相反(参见元素的label属性)。该   活动的标签 - 无论是在这里设置还是由元素设置 -   也是所有活动的意图过滤器的默认标签(请参阅   元素的标签属性)。标签应该是   设置为对字符串资源的引用,以便可以对其进行本地化   与用户界面中的其他字符串一样。但是,为方便起见   在开发应用程序时,它也可以设置为原始应用程序   字符串。

答案 2 :(得分:9)

试试这个:

android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");

答案 3 :(得分:5)

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

答案 4 :(得分:3)

都能跟得上!你必须在运行时这样做。

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

if(Integer.valueOf(android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}

答案 5 :(得分:3)

+-----------------------------+                              +----------------------------+
+--+AccountingServiceComponent                               +-+InventoryServiceComponent
|                                      Weak Dependency       |
+--+AccountingBusinessComponent      <------------------+    +-+InventoryBusinessComponent
|                                                            |
+--+AccountingDataComponent                                  +-+InventoryDataComponent
       +                                                         +
       +-+ GetDocumentByID(int id)                               +--+GetProductByID(int id)
       |                                                         |
       +-+ SaveDocument(Document d)                              +--+SaveProduct(Product p)

将此代码放入您的Android清单文件中,并将操作栏的标题设置为您想要的内容!

答案 6 :(得分:1)

试试这个:

在strings.xml中添加标题和副标题......

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));

答案 7 :(得分:1)

试一下

只需转到您的清单文件即可。 并且您已为清单文件中的每个活动定义标签。

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

这里改变

机器人:标签=&#34; @串/ your_title&#34;

答案 8 :(得分: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);
}

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

答案 9 :(得分:0)

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

<activity
            android:name=".YourActivity"
            android:label="Your Title" />

答案 10 :(得分:0)

这在Kotlin中是微不足道的单行

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

答案 11 :(得分:0)

supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"