怎么样隐藏 Activity 的标题栏

Android 码拜 8年前 (2016-03-24) 983次浏览
先在网上查找了下,有结论的方法,如: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);

也一样没有效果,虽然不会出错。

解决方案

5

requestWindowFeature(Window.FEATURE_NO_TITLE);   这个方式在手机上好用,在平板上不好用!

5

这不是原因,你用的是 android supportv7 包里的 Appcompat 框架,来实现 Actionbar 对吧,对于这个包里的 ActionbarActivity, 他在初始化的时候,会检查你的 theme, 假如主题不是 Appcompat 的主题就会报错,你改一下主题形式,让他为,
Theme.AppCompat.Light 就好了

30

假如要隐藏掉 Actionbar, 就是用 getSupportActionbar().hide()就好了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样隐藏 Activity 的标题栏
喜欢 (0)
[1034331897@qq.com]
分享 (0)