目录
(2)通过 AndroidManifest.xml 配置,实现无标题栏
步骤1:通过 AndroidManifest.xml 配置设置
前言
在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示。即如下图标题栏、菜单栏都不显示。
它可以通过两种方式来设置全屏显示效果。
方式一:设置全屏
1、设置无标题栏
(1)java代码实现,无标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
requestWindowFeature(Window.FEATURE_NO_TITLE);
要放置在 setContentView(R.layout.activity_main); 这行代码的前面,要不然会报错。
注意:之前 Android 2.3 测试是有效的。Android 6.0、8.0 无效果!
Android 6.0、8.0 可以使用如下语句:
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
(2)通过 AndroidManifest.xml 配置,实现无标题栏
某个activity无标题栏
<activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2、设置无菜单栏
(1)java代码实现无菜单栏
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ); }
方式二:设置全屏【推荐】
1、全部Activity全屏
步骤1:通过 AndroidManifest.xml 配置设置
<application
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
>
步骤2:Activity继承问题
情况1:继承Activity,不继承AppCompatActivity【推荐】
import android.app.Activity; //public class MainActivity extends AppCompatActivity { public class MainActivity extends Activity {
此时 AndroidManifest.xml 配置的Activity 如下:
<activity android:name=".RegisterActivity" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
情况2:继承AppCompatActivity【不推荐】
因为步骤1,配置了如下 theme
<application
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
>
如果 Activity 继承 AppCompatActivity
import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { //public class MainActivity extends Activity {
此时运行项目会报如下错误:
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
解决方式:
如果必须要继承AppCompatActivity的话,根据提示来使用AppCompat的theme,
即将AndroidManifest.xml文件中关于Activity的主题配置改成:
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
例如:
<activity android:name=".RegisterActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
上面两个Activity都要加,看上去使用 情况1:继承Activity 稍微方便