如何隐藏 Activity 的标题栏

91program
博客专家认证
2014-10-15 05:17:48
先在网上查找了下,有结论的方法,如:http://quanminchaoren.iteye.com/blog/1066178
但按网上的方法进行操作,竟然不成功!我是真机上进行测试的,求解决方法。

隐藏应用中各 Activity 的标题栏
在 res\values 目录新建文件: style.xml,或在 styles.xml 中增加如下内容:
   <style name="notitle">
<item name="android:windowNoTitle">true</item>
</style>

然后修改 manifest 文件中 theme 的行,修改后如下:
<application android:icon="@drawable/icon" 
android:label="@string/app_name"
android:theme="@style/notitle">

或,使用如下语句:
android:theme="@android:style/Theme.NoTitleBar">


出错的 LOG:
10-15 14:18:51.282: D/AndroidRuntime(8833): Shutting down VM
10-15 14:18:51.282: W/dalvikvm(8833): threadid=1: thread exiting with uncaught exception (group=0x4001b6a8)
10-15 14:18:51.302: E/AndroidRuntime(8833): FATAL EXCEPTION: main
10-15 14:18:51.302: E/AndroidRuntime(8833): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hs.leozheng.phonelinkhs/com.hs.leozheng.phonelinkhs.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1734)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1753)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread.access$1500(ActivityThread.java:155)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:999)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.os.Handler.dispatchMessage(Handler.java:130)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.os.Looper.loop(SourceFile:351)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread.main(ActivityThread.java:3820)
10-15 14:18:51.302: E/AndroidRuntime(8833): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 14:18:51.302: E/AndroidRuntime(8833): at java.lang.reflect.Method.invoke(Method.java:538)
10-15 14:18:51.302: E/AndroidRuntime(8833): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969)
10-15 14:18:51.302: E/AndroidRuntime(8833): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:727)
10-15 14:18:51.302: E/AndroidRuntime(8833): at dalvik.system.NativeStart.main(Native Method)
10-15 14:18:51.302: E/AndroidRuntime(8833): Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:110)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:99)
10-15 14:18:51.302: E/AndroidRuntime(8833): at com.hs.leozheng.phonelinkhs.MainActivity.onCreate(MainActivity.java:51)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
10-15 14:18:51.302: E/AndroidRuntime(8833): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1698)
10-15 14:18:51.302: E/AndroidRuntime(8833): ... 11 more


另外,尝试修改代码,在 setContentView(R.layout.activity_main); 前增加如下所示的代码:
requestWindowFeature(Window.FEATURE_NO_TITLE);

也一样没有效果,虽然不会出错。
...全文
919 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicyang1234 2016-07-08
  • 打赏
  • 举报
回复
编译的sdk版本?你用的是actionbar还是v7的toolbar?明确以后,这两个都有对应的hide title的方法。
uu00soldier 2016-07-07
  • 打赏
  • 举报
回复
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowBackground">@color/white</item> </style> 在style里修改你使用的主题,也可以达到要求
PogbaLiu 2016-06-07
  • 打赏
  • 举报
回复
引用 6 楼 kifile 的回复:
如果要隐藏掉 Actionbar, 就是用 getSupportActionbar().hide()就好了
这个我第一次见,但是也能起作用,谢谢
PogbaLiu 2016-06-07
  • 打赏
  • 举报
回复
引用 3 楼 kifile 的回复:
这不是原因,你用的是 android supportv7 包里的 Appcompat 框架,来实现 Actionbar 对吧,对于这个包里的 ActionbarActivity, 他在初始化的时候,会检查你的 theme, 如果主题不是 Appcompat 的主题就会报错,你改一下主题形式,让他为, Theme.AppCompat.Light 就好了
此为正解
PogbaLiu 2016-06-07
  • 打赏
  • 举报
回复
引用 3 楼 kifile 的回复:
这不是原因,你用的是 android supportv7 包里的 Appcompat 框架,来实现 Actionbar 对吧,对于这个包里的 ActionbarActivity, 他在初始化的时候,会检查你的 theme, 如果主题不是 Appcompat 的主题就会报错,你改一下主题形式,让他为, Theme.AppCompat.Light 就好了
你好,请问supportV7包里面的Actionbar就是我们说的标题栏吗?
哎,真难 2014-10-15
  • 打赏
  • 举报
回复
感觉还是没有找到Theme.NoTitleBar,既然V7包,看下V7包里面的style有什么
91program 2014-10-15
  • 打赏
  • 举报
回复
引用 8 楼 kifile 的回复:
恩,如果你的 activity 没有重写 android:theme 的话,这样就好了
嗯,我没有重写 Activity。但那样设置还是没有达到隐藏标题栏的目的。 不过调用你 6L 提供的方法是可以的。 多谢!
Kifile 2014-10-15
  • 打赏
  • 举报
回复
引用 9 楼 heaimnmn 的回复:
哪里看出来用v7的???
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
哎,真难 2014-10-15
  • 打赏
  • 举报
回复
哪里看出来用v7的???
Kifile 2014-10-15
  • 打赏
  • 举报
回复
恩,如果你的 activity 没有重写 android:theme 的话,这样就好了
91program 2014-10-15
  • 打赏
  • 举报
回复
引用 3 楼 kifile 的回复:
这不是原因,你用的是 android supportv7 包里的 Appcompat 框架,来实现 Actionbar 对吧,对于这个包里的 ActionbarActivity, 他在初始化的时候,会检查你的 theme, 如果主题不是 Appcompat 的主题就会报错,你改一下主题形式,让他为, Theme.AppCompat.Light 就好了
是这样修改吗? <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.Light">
Kifile 2014-10-15
  • 打赏
  • 举报
回复
如果要隐藏掉 Actionbar, 就是用 getSupportActionbar().hide()就好了
91program 2014-10-15
  • 打赏
  • 举报
回复
在 Eclipse 的 Activity 的 “Graphic Layout” 中看到的已经是没有标题栏了,可能下载到手机上运行却有标题栏。
91program 2014-10-15
  • 打赏
  • 举报
回复
引用 2 楼 heaimnmn 的回复:
你的sdk是什么版本的
引用 1 楼 hjq2013 的回复:
requestWindowFeature(Window.FEATURE_NO_TITLE); 这个方式在手机上好用,在平板上不好用!
我是在手机上用,SDK 的版本是:10,Android 的版本是:2.3.6(不知道说的对不对)
Kifile 2014-10-15
  • 打赏
  • 举报
回复
这不是原因,你用的是 android supportv7 包里的 Appcompat 框架,来实现 Actionbar 对吧,对于这个包里的 ActionbarActivity, 他在初始化的时候,会检查你的 theme, 如果主题不是 Appcompat 的主题就会报错,你改一下主题形式,让他为, Theme.AppCompat.Light 就好了
哎,真难 2014-10-15
  • 打赏
  • 举报
回复
你的sdk是什么版本的
Hare_ 2014-10-15
  • 打赏
  • 举报
回复
requestWindowFeature(Window.FEATURE_NO_TITLE); 这个方式在手机上好用,在平板上不好用!

80,447

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧