我可以对最新版本的Android Studio创建的新空白活动进行最简单的更改,以使应用程序全屏显示?
我想创建一个全屏Android应用程序。我正在使用Android Studio。 This post建议我添加一行如......
android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"
...到AndroidManifest.xml文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lexogram.james.blackslate" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lexogram.james.blackslate.MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
当我这样做时,应用程序编译但在启动时崩溃。如果我删除该行,该应用程序运行正常,但使用操作栏和标题栏,其他用户也会注意到。
这是我第一次尝试创建Android应用程序,因此我的应用程序几乎不会改变原始的Hello World示例。
编辑:我创建了一个新项目,并对其进行了一次更改。以下是错误日志的摘录:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lexogram.james.test/com.lexogram.james.test.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)...
注意:我正在测试旧的三星SGH-T499Y,运行Android 2.2(Froyo)
您遇到此问题是因为您尝试应用android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
的活动正在扩展ActionBarActivity,这需要应用AppCompat主题。
从Activity
而不是ActionBarActivity
扩展您的活动
您可能需要相应地更改Java类。
如果你想删除状态栏,那么在setContentView(layout)
方法中的onCreateView
之前使用它
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
只需将以下属性添加到当前主题:
<item name="android:windowFullscreen">true</item>
例如:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/orange</item>
<item name="colorPrimaryDark">@android:color/holo_orange_dark</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
只需在活动代码的清单文件中执行此操作即可
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
在我的情况下一切正常。在logcat中查看。也许logcat显示的东西可以帮助您解决您的问题
无论如何,你可以尝试以编程方式:
public class ActivityName extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
更新答案我添加了android:windowIsTranslucent
,以防您在活动开始时有白屏
只需在values / styles.xml中创建新样式
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- to hide white screen in start of window -->
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
从您的AndroidManifest.xml中添加样式到您的活动
android:theme="@style/AppTheme"
就像这样
<activity android:name=".Splash"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在onCreate
电话
requestWindowFeature(Window.FEATURE_NO_TITLE); // for hiding title
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
您可以使用以下代码在android中创建一个完整的页面
第1步:在styles.xml部分创建主题
<style name="AppTheme.Fullscreen" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
第2步:在AndroidManifest.xml上添加主题
<activity
android:name=“.Activity”
android:theme="@style/AppTheme.Fullscreen"/>
第3步:Java代码部分
例如,您可以将以下代码添加到onCreate()方法中。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
我最近有完全相同的问题,也受益于以下帖子(除了上面的Rohit5k2解决方案):
在第3步中,MainActivity
扩展Activity
而不是ActionBarActivity
(如Rohit5k2所述)。将NoTitleBar
和Fullscreen
主题元素放入AndroidManifest.xml
文件中的正确位置也非常重要(请参阅步骤4)。