如何隱藏各 Activity 中的標題欄和系統(tǒng)的圖標欄
1 隱藏系統(tǒng)的圖標欄
在 setContentView(R.layout.activity_main); 之前增加:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,?WindowManager.LayoutParams.FLAG_FULLSCREEN);
就可以達到隱藏系統(tǒng)圖標欄的目的。
2 隱藏應用中各 Activity 的標題欄
在 resvalues 目錄新建文件: style.xml,或在 styles.xml 中增加如下內(nèi)容:
????true"?_ue_custom_node_="true">
然后修改 manifest 文件中 theme 的行,修改后如下:
或,使用如下語句:
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);
也一樣沒有效果。
以上兩種方法(也可以說是三種)是網(wǎng)上提供的方法,但測試后都未達到目的。
最后得到了一種解決方法。
是 android supportv_7 包里的 Appcompat 框架,來實現(xiàn) Actionbar 對吧
對于這個包里的 ActionbarActivity,他在初始化的時候,會檢查你的 theme,如果主題不是 Appcompat 的主題就會報錯,你改一下主題形式,讓他為:
Theme.AppCompat.Light 就好了
哪里看出來用v7的?Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
如果要隱藏掉 Actionbar, 就是用:
getSupportActionBar().hide();
就好了