以前有人问过这个问题 - 但根本没有令人满意的答案!所以我再试一次。
我想给我的应用程序启动器图标(显示在开始屏幕上的那个!)一个不同的、更短的标题。启动器似乎从关于主要活动标签的 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 的原始引用更改为另一个更短的字符串资源。
但是 - 大 但是 :这当然也改变了这个活动的默认标题!而且我不希望这种情况发生,有足够的空间容纳一个长的应用程序名称!onCreate使用该方法再次设置长标题setTitle(int)也没有好处,因为短名称将在短时间内对用户可见,但足够长才能注意到!
onCreate
setTitle(int)
而且 - 请不要通过引用自定义标题栏来回答我的问题......我不想走那么远,只是因为一个愚蠢的字符串标题!画一个自定义标题栏效果太差了,太痛苦了!
有 没有简单的方法 可以让启动器显示一个不同的字符串?感谢您的回答!
编辑: 拥有自定义标题栏令人痛苦的另一个原因是它看起来不像默认标题栏,我必须明确地做一些事情以使其在每台设备上看起来都一样!毕竟,如果我不想要不同的外观,那也不是解决方案!
显然<intent- filter>可以有一个标签属性。如果它不存在,则标签是从父组件(活动或应用程序)继承的。因此,使用它,您可以为启动器图标设置标签,同时仍然让 Activity 具有自己的标题。
<intent- filter>
请注意,虽然这适用于模拟器,但它可能不适用于真实设备,因为它取决于所使用的启动器实现。
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>
旁注:也可以有一个icon属性,但是莫名其妙的并 没有 覆盖Activity中指定的icon。如果您计划在 SDK 11+ 中使用本机 ActionBar,这对您可能很重要,它使用 Activity 上指定的图标和徽标。
添加信息: 标签是从 Activity 继承的,而不是从应用程序继承的。
<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 将显示启动器图标,如果我们没有像上面提到的那样把标签放在里面。