Android開發小技巧之--------繼承AppCompatActivity後設置全屏的問題

Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content  at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:229)at android.app.Activity.requestWindowFeature(Activity.java:3244) java

遇到過這個錯誤的童鞋都知道是由於在設置全屏的時候,代碼寫在了setContentView(R.layout.main)後面,若是寫在前面就不會有問題了,可是當你繼承的不是Activity而是AppCompatActivity的時候,問題仍是來了....
android

你們都知道設置全屏有兩種方式 ,一種是manifest.xml裏面設置notitle的主題,一種是在代碼裏面設置 app

設置沒有標題 ui

requestWindowFeature(Window.FEATURE_NO_TITLE);

設置全屏 spa

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
而後這兩行代碼還必須寫在setContentView()前面


是的,若是你的activity繼承的是Activity這樣是沒有問題,可是若是你的activity繼承了v7的AppCompatActivity的時候,你會發現仍是會報上面的錯誤。我來提供一個解決方法,仍是用設置主題的形式 code

給你要全屏的activity設置一個theme, xml

<!--設置-全屏--> <style name="NoTitleFullscreen" parent="BaseAppTheme"> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> </style>



<activity  android:name=".ui.LogoActivity"  android:theme="@style/NoTitleFullscreen">


完美。無論你的系統是哪個版本都沒有問題 繼承

設置無標題,必定要設置這兩個,windowActionBar也須要設置,否則會在低版本上仍是有title get


<item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item>
相關文章
相關標籤/搜索