如何为启动程序设置不同的标签而不是活动标题?
这个问题之前已经被问过 - 但是根本没有令人满意的答案! 所以我再试一次。
我想给我的应用程序启动器图标(在启动屏幕上显示的那个图标!)一个不同的,更短的标题。 看起来发射器从mainfest部分获得了关于主要活动标签的标签,如下所示:
<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
我已将原来的引用更改为我的应用程序的名称@ string / app_name,并将其更改为另一个较短的字符串资源。
但是 - 大但是 :这当然也改变了这个活动的默认标题! 我不希望发生这种情况,有足够的空间来存放长时间的应用程序名称! 使用setTitle(int)
方法在onCreate
再次设置长标题也没有好处,因为短名称在短时间内对用户可见,但足够长以便注意!
而且 - 请不要通过引用自定义标题栏来回答我的问题......我不想走很长的路,只是因为一个愚蠢的字符串标题! 绘制自定义标题栏以获得如此小的效果是一件很痛苦的事情!
有没有简单的方法可以让启动器显示不同的字符串? 谢谢你的回答!
编辑:为什么有一个自定义的标题栏的另一个原因是,它不会看起来像默认的标题栏,我不得不明确做的事情,使它看起来在每个设备上都相似! 如果毕竟,我不想要一个不同的外观,这不可能是一个解决方案!
显然<intent-filter>
可以有一个标签属性。 如果不存在,标签将从父组件继承(Activity或Application)。 所以使用这个,你可以为启动器图标设置一个标签,同时仍然拥有带有自己标题的Activity。
请注意,虽然这适用于仿真器,但它可能无法在真实设备上工作,因为它取决于所使用的启动器实现。
http://developer.android.com/guide/topics/manifest/intent-filter-element.html
<activity
android:name=".ui.HomeActivity"
android:label="@string/title_home_activity"
android:icon="@drawable/icon">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注意:<intent-filter>也可以有一个图标属性,但不可否认的是它不会覆盖活动中指定的图标。 如果您计划在SDK 11+中使用本机ActionBar,该工具栏使用活动上指定的图标和徽标,这对您可能很重要。
补充信息:标签是从活动而不是应用程序继承的。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".StartActivity"
android:label="@string/app_long_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在这种情况下,如果我们没有像上面提到的那样放置标签,app_long_name将显示为启动器图标。
我正在寻找同样的东西,这是对我有用的东西。
<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这将为您的应用程序启动器图标提供一个简短的名称。
要将更大的名称添加到应用程序栏,您只需添加:
this.setTitle(getResources().getString(R.string.app_name));
到你的主要活动java文件。
Mark Renouf的解决方案对我不利(使用Nexus 4和Android 4.4)。 使用快捷方式时失败,快捷方式使用主要活动标签而不是应用程序名称。 我看到一些像GMail和Google Keep这样的应用程序工作正常。 但是,当你打开它们时,我会注意到它的标题是空白的,标题出现了(这似乎比使用setTitle()设置标题之前闪烁的应用程序名称更好)。
所以这里是我找到的最佳解决方案 :
创建一个ActionBar不显示标题/标签的样式:
<style name="NoActionBarTitle" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/NoActionBarTitle.ActionBar</item>
</style>
<style name="NoActionBarTitle.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions">showHome|useLogo</item>
</style>
我正在使用导航抽屉并使用徽标(因为我为我的应用使用了徽标和图标)。 您可以使用任何内容但不使用showTitle 。 然后在AndroidManifest.xml中,设置MainActivity的主题:
<activity
android:name="com.xx.xxx.MainActivity"
android:logo="@drawable/ic_icon_padding"
android:theme="@style/NoActionBarTitle">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
然后,在MainActivity的onCreate()方法中,设置您的Action Bar的标题:
getActionBar().setTitle(R.string.your_title);
之后 ,你可以打电话给:
getActionBar().setDisplayShowTitleEnabled(true);
棘手但值得。
链接地址: http://www.djcxy.com/p/90745.html上一篇: How to set different label for launcher rather than activity title?
下一篇: How to keep the spaces at the end and/or at the beginning of a String?