【问题标题】:How to remove title bar from the android activity?如何从 android 活动中删除标题栏?
【发布时间】:2016-03-26 14:04:28
【问题描述】:

有人可以帮我解决这个问题吗?我希望我的活动全屏,并想从屏幕上删除标题。我尝试了几种方法,但无法删除它。

活动代码:

public class welcomepage extends Activity {
    private Button btn;
    EditText userName,passWord;
    DatabaseHandler dbHandler;
    Context ctx =this;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_welcomepage);
   }
}

还有Activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/pic1"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.edkul.vimal.edkul.welcomepage">

</RelativeLayout>

我想删除显示为蓝色的标题栏。请查找图片以供参考:

AndroidManifest.xml

<application
        android:minSdkVersion="3"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity
            android:name=".welcomepage"
            android:label="@string/app_name"
            android:theme="@style/Theme.AppCompat.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

【问题讨论】:

  • 您是否尝试将活动设置为全屏?如果您不想按照以下答案中的建议编写代码,请创建新活动并从选项中选择全屏
  • @vimal 将主题样式更改为&lt;android:theme="@android:style/Theme.NoTitleBar"&gt; 如果您使用支持库,请将它们的样式更改为@style/Theme.AppCompat.NoActionBar 只需将其添加到您的application 标签即可应用它应用范围 在 manifest.xml 中
  • @Kathi 它工作了谢谢。但我的活动不是全屏的。只有标题栏熄灭。
  • 你的意思是我也不需要status bar 对吗?我不明白你所说的全屏是什么?
  • @Kathi 删除标题后,状态栏和主屏幕之间存在一些空白。它应该在那里或我们可以填补这个空白的任何方式。我对 android 非常陌生,所以不知道很多。

标签: android android-layout


【解决方案1】:

您只需将此样式添加到您的值文件夹中的style.xml 文件中

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

之后,将此style 设置为AndroidManifest.xml 文件中的活动类

android:theme="@style/AppTheme.NoActionBar"

编辑:-如果您要使用编程方式隐藏 ActionBar,请在您的活动 onCreate() 方法中使用以下代码。

if(getSupportedActionbar()!=null)    
     this.getSupportedActionBar().hide();

如果你想从 Fragment 中隐藏 ActionBar,那么

getActivity().getSupportedActionBar().hide();

AppCompat v7:- 在您不想要 actiobBar Theme.AppComat.NoActionBarTheme.AppCompat.Light.NoActionBar 的活动中使用以下主题,或者如果您想隐藏在整个应用程序中,请在您的 &lt;application... /&gt; 中设置此主题 AndroidManifest

在 Kotlin 中:

在您的onCreate() 方法中添加这行代码,或者您可以使用上述主题。

supportActionBar?.hide()

我希望这对你有更多帮助。

【讨论】:

  • 这是否会将其从所有活动中删除,因为它位于清单文件中,而不是活动 xml 文件中?
  • @gabe 如果您在应用程序级别设置此主题并且您没有为任何活动设置任何其他主题,那么它将从所有文件中删除,否则仅在您设置此样式的特定活动中删除主题
  • 在 Kotlin 中这个条目就足够了 supportActionBar?.hide()
【解决方案2】:

试试这个:

this.getSupportActionBar().hide();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try
    {
        this.getSupportActionBar().hide();
    }
    catch (NullPointerException e){}

    setContentView(R.layout.activity_main);
}

【讨论】:

  • 检查指针比捕捉异常要好。
【解决方案3】:

你可以试试:

<activity android:name=".YourActivityName"
          android:theme="@style/Theme.Design.NoActionBar">

对我有用

【讨论】:

    【解决方案4】:

    在您的 Android 清单文件中,确保活动正在使用此(或一个)主题(基于)@style/Theme.AppCompat.NoActionBar 这会完全删除 ActionBar,但不会让您的活动全屏显示。 如果你想让你的活动全屏只使用这个主题

    @android:style/Theme.NoTitleBar.Fullscreen
    

    或者你可以改变

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    requestWindowFeature(Window.FEATURE_NO_TITLE);
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

    这是我用来在运行时获得全屏的方法

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                    mDecorView = getWindow().getDecorView();
                    mDecorView.setSystemUiVisibility(
                            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
                }
    

    要退出全屏我用这个

    mDecorView = getWindow().getDecorView();
    mDecorView.setSystemUiVisibility(
                        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    

    【讨论】:

    • 感谢您的回复!!我已经用 application.xml 更新了我的代码。我已经尝试了你的建议。但它不起作用。任何建议!!
    • @vimalmishra 您需要更改 AndroidManifest.xml 而不是 application.xml。
    • 我已经用 android manifest.xml 更新了我的代码。现在我可以删除标题栏了。但它不是全屏的。
    • @vimalmishra 抱歉,我以为您只想删除操作栏。我会更新我的答案。
    • 这不会让对话框在 android v 2 中看起来很旧,哈哈,它们不再是材料了
    【解决方案5】:

    添加活动

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    并使用以下两行添加您的style.xml 文件:

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    

    【讨论】:

    • 这将隐藏您的通知标签,但标题栏将保留在那里
    【解决方案6】:

    您只需在 style.xml 文件中添加以下代码行

    <style name="AppTheme.NoTitleBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    

    在 AndroidManifest.xml 文件中更改 apptheme

    android:theme="@style/AppTheme.NoTitleBar"
    

    【讨论】:

    • .NoTitleBar 是关键,无论您从哪个基本主题继承。
    【解决方案7】:

    在 style.xml 中添加这两行

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    

    【讨论】: