2013-05-09 37 views
0

简单而简单的问题:如何为应用程序设置标签,但为所有活动清空?

我使用actionBarSherlock库,并希望只将应用程序的标签设置为某个字符串,但除非另行指定,否则所有活动都有空标签。

我知道你可以查看每项活动并将其标签设置为“”,但是有没有更好的解决方案?喜欢使用样式?我试过了:

<item name="android:label"></item> 

在那里,但它没有做任何事情。


编辑:事实是,由于某种原因,将所有活动的标签为“”,实际上也改变了应用程序的标签在某些Android版本(对GALAXY S小测试,与Android 2.3),所以它的名字也是“”。怎么来的?这是一个错误?


这是一个在android或我测试过的任何启动器上的bug。

似乎将标签设置为“”(或至少是主标签)的活动将应用程序的名称设置为“”,因此应用程序标签的标签仅用于所有其活动。

回答

2

您可以通过将<item name="android:windowNoTitle">true</item>放入您的应用程序主题中来删除整个标题栏。我不认为你应该有一个没有标题的标题栏(除非在运行3.0或更高版本的设备上,标题栏变成ActionBar并且具有更多功能),因为它只会浪费宝贵的空间。

如果您在3.0+发展,以及2.3,将以下元素添加到您的主题:

<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
</style> 

<style name="ActionBar" parent="@android:style/Widget.ActionBar"> 
    <item name="android:displayOptions">showHome|useLogo</item> 
</style> 

编辑:

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppBaseTheme" parent="android:Theme.Holo"> 
     <!-- Base Theme style elements --> 
    </style> 

    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- Other style elements. --> 
     <item name="android:actionBarStyle">@style/ActionBar</item> 
    </style> 

    <style name="AppThemeWithTitle" parent="AppTheme"> 
     <item name="android:actionBarStyle">@style/ActionBarWithTitle</item> 
    </style> 

    <style name="ActionBar" parent="@android:style/Widget.ActionBar"> 
     <!-- Other ActionBar style elements. --> 
     <item name="android:displayOptions">showHome|useLogo</item> 
    </style> 

    <style name="ActionBarWithTitle" parent="ActionBar"> 
     <item name="android:displayOptions">showHome|useLogo|showTitle</item> 
    </style> 

</resources> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.themes" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.themes.Activity1" 
      android:theme="@style/AppThemeWithTitle"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name="com.example.themes.Activity2" /> 
     <activity 
      android:name="com.example.themes.Activity3" /> 

    </application> 

</manifest> 

Activity1将显示标题,但Activity2和Activity3不会。

+0

这不是我所要求的。我在动作栏上放了一些东西,比如图标和一些动作项目。有时我需要放置文本,有时我不需要 – 2013-05-09 13:58:02

+0

创建另一个主题,称'TitleTheme',它继承自'AppTheme',但带有 showTitle'。然后将其设置为清单中相关活动的主题。这样活动将没有标题作为默认值。 – 2013-05-09 14:10:01

+0

我不明白。你可以请代码(包括清单)显示?也许是一个样本? – 2013-05-09 15:22:41

相关问题