在 Android 中,当活动启动时,在标题栏中隐藏应用程序启动器图标

7
我在SO上搜索了,但没有找到类似的问题,因为我不确定如何用句子来表达。我正在使用ActionBarSherlock,在活动的左上角放置一个带有文本的标志而不是启动器图标(即72x72的图标)。
当活动第一次加载时,一瞬间会看到manifest中定义的启动器图标和标签(如下所示),然后才会出现带有标志的操作栏。这个主页活动非常简单,因此它没有进行任何额外的加载,可能会导致延迟。
<application
    android:hardwareAccelerated="true"
    android:icon="@drawable/launcher_icon"
    android:label="@string/app_name"
    android:screenOrientation="portrait" >

    <activity
        android:name=".SplashScreenActivity"
        android:label="@string/app_name"
        android:logo="@drawable/ab_logo"
        android:theme="@android:style/Theme.Light.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".HomeActivity"
        android:label="@string/homeitle"
        android:logo="@drawable/ab_logo"
        android:theme="@style/MyTheme" >
    </activity>

 </application>

我可以通过将文本样式设置为与背景颜色相同来使文本“消失”,但我找不到一种方法从活动中删除/隐藏启动器图标。
我已经设置了一个启动屏幕活动(如上所示的清单),它只加载我的主页活动,问题就出现在这里。这确实有所帮助,但有时在加载活动时仍会出现问题。
public class SplashScreenActivity extends Activity
{
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
        super.onCreate(savedInstanceState);
   }

   @Override
   public void onResume()
   {
       super.onResume();
       Intent i = new Intent(getBaseContext(), HomeActivity.class);
       startActivity(i);
       finish();
   }
}

有没有办法隐藏启动器图标和标题标签,使其在ActionBarSherlock显示之前不会显示出来?最好不需要启动画面,因为有几种方法可以访问活动,避免上面显示的启动画面。

--- 更新我的主题文件 ----

   <style name="MyTheme" parent="Theme.Sherlock.ForceOverflow">
    <item name="android:windowBackground">@color/white</item>
    <item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
    <item name="android:actionMenuTextColor">@color/white</item>
    <item name="actionBarStyle">@style/MyTheme.ActionBar</item>
    <item name="actionMenuTextColor">@color/white</item>
</style>

<style name="MyTheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/blue</item>
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
    <item name="android:displayOptions">showHome|useLogo</item>
    <item name="displayOptions">showHome|useLogo</item>
    <item name="background">@color/blue</item>
    <item name="titleTextStyle"> @style/MyTheme.ActionBar.TitleTextStyle</item>
</style>

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/blue</item>
</style>
1个回答

10

通过将图标添加到样式中(与标志相同),已经解决了问题。这将覆盖启动器图标。

    <style name="MyTheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
      <item name="android:background">@color/infostop_blue</item>
      <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
      <item name="android:displayOptions">showHome|useLogo</item>
      <item name="displayOptions">showHome|useLogo</item>
      <item name="android:icon">@drawable/ab_logo</item>
      <item name="icon">@drawable/ab_logo</item>
      <item name="background">@color/blue</item>
      <item name="titleTextStyle"> @style/MyTheme.ActionBar.TitleTextStyle</item>
    </style>

找到你的问题真的很困难,但我很高兴我找到了,因为你的答案是有效的。 :) - Elad Nava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接