我想在编译时设置我的操作栏的标题和副标题。 我有办法这样做:
ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
但我不想在运行时这样做。是否有任何xml文件或任何我可以指定这些标题的位置?
我正在努力实现这一目标:
我想在xml中使用它的原因是我希望我的应用程序在API级别8中受支持。并且方法getActionBar()至少在第11级受支持。
答案 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!"