无法在Activity中移除标题栏

9
我可以帮您翻译成中文。以下是需要翻译的内容:

我希望能够在我的 Activity 顶部移除标题。我尝试了两种方法,它们在 API 级别 8 上无法正常工作。

1:

<style name="NOtitleTheme" parent="Theme.AppCompat.Light">
<item name="android:windowFullscreen">true</item>
   <item name="android:windowNoTitle">true</item> </style>

2:

第二点:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

有什么想法为什么这在api 8上不起作用?

我曾经在api 8上成功删除它,但我不记得是如何做的。


编辑:

解决了!问题是this.requestWindowFeature(Window.FEATURE_NO_TITLE)在API 8上不起作用,而且<item name="android:windowNoTitle">true</item>也不起作用,但是actionBar.hide()可以,getSupportActionBar()返回null的原因是之前使用了其中一种选项,我只是忘记删除其中一个。当我删除一个时,我添加了另一个(太愚蠢了!)谢谢大家!(对于糟糕的英语表示抱歉)


我使用ActionBarActivity,可能很重要。 - arsenal
请查看此链接,https://dev59.com/wWfWa4cB1Zd3GeqPl_BA - Rajesh Mikkilineni
不相关,无帮助。 - arsenal
请查看此链接:https://dev59.com/_2Yr5IYBdhLWcg3wn7gc#13523319 - prabhakaran
5个回答

10

将以下内容添加到你的清单(manifest)中:

用于全屏:

        <activity
        android:name="youtpackagename.activityname"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

或者(仅隐藏标题)

       <activity
        android:name="youtpackagename.activityname"
        android:theme="@android:style/Theme.NoTitleBar" >

或者在setContentView方法之前使用以下代码。

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
或者
{
  ActionBar actionBar = getActionBar(); or getSupportActionBar();
  actionBar.hide();
}

编辑:

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);

它在API 8以下也可以正常工作...我希望这会对你有所帮助。


我尝试了所有的方法,我创建了一个没有NoTitleBar的自定义主题,但是它并没有起作用。我没有收到任何错误提示,但标题仍然在顶部显示。 - arsenal
@arsenal 不需要创建任何主题,只需在你的activity标签(清单)中添加“android:theme =”@android:style/Theme.NoTitleBar.Fullscreen“即可。这是安卓默认主题。 - prabhakaran
我无法添加主题,因为我使用的是ActionBarActivity,当我更改主题时会出现错误,除非使用Theme.AppCompat。 - arsenal
getSupportActionBar() 返回空值。 - arsenal
@arsenal 好的,终于找到答案了!但是早在之前我就提到了两个。 - prabhakaran

3
    <resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->

         <item name="android:windowFullscreen">true</item> <!-- Hides the status bar -->
    </style>

</resources> 

将以下内容添加到您的AppTheme的styles xml中。
同时,
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().hide();
    }

}

将以下内容添加到您的活动中。使用ActionBarActivity而不是Activity。

getSupportActionBar() 返回 null。 - arsenal
你移除了这个代码 this.requestWindowFeature(Window.FEATURE_NO_TITLE) 吗? - Jossy Paul
你不需要使用其他的东西。我已经尝试过API 8和19,两者都可以正常工作。 - Jossy Paul
去掉这个.requestWindowFeature(Window.FEATURE_NO_TITLE); - Jossy Paul
我已经删除了这个代码:this.requestWindowFeature(Window.FEATURE_NO_TITLE); 但是仍然无法获取到 getSupportActionBar() 的返回值,它仍然为 null。 - arsenal
我忘了把两个都删除! - arsenal

1
对我来说,唯一有效的方法是这样做:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

只有将我的主题设置为NoActionBar的子类,我才成功地消除了actionBar。其他方法都失败了。不知道为什么。


0
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);

在调用setContentView方法之前使用requestWindowFeature方法。


我知道,在setContentView方法之前使用它,但什么也没有发生。 - arsenal
1
在Activity中,this.requestWindowFeature(Window.FEATURE_NO_TITLE)是有效的,我使用ActionBarActivity。 - arsenal

0

你的"解决办法"(自己隐藏actionBar)是正常的方式。但是Google建议在隐藏标题栏时始终隐藏actionbar。在这里查看一下: https://developer.android.com/training/system-ui/status.html

如果你的构建版本低于16,请按照以下方式使用它

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    setContentView(R.layout.activity_main);
}
...

}


1
我试图隐藏ActionBar,但getActionBarSupport返回null,似乎我没有ActionBar。 - arsenal
请发布您的完整onCreate方法...并且必须在setContentView之前使用上述代码。 - Dharmendra Pratap Singh
全屏不是我的问题,我的活动已经全屏并且正常,问题在于标题。 - arsenal

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