如何为Android中的活动设置全屏模式?我使用以下代码设置全屏但它会生成错误:
例外:
android.util.AndroidRuntimeException:
requestFeature() must be called before adding content.
Run Code Online (Sandbox Code Playgroud)
码:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud) 我需要对话框来填充屏幕,除了顶部和底部的一些空间.我正在寻找一个解决方案,但找不到一个可能是因为我正在宣布它onClickListener.有人可以给一个解决方案吗?
活动代码:
sort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder sort = new AlertDialog.Builder(HomeScreen.this);
// Get the layout inflater
LayoutInflater inflater = HomeScreen.this.getLayoutInflater();
View sortView = inflater.inflate(R.layout.sort_layout, null);
sort.setView(sortView);
sort.create().show();
}
});
Run Code Online (Sandbox Code Playgroud)
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="50dp"
android:layout_marginTop="50dp"
android:background="@color/white"
android:orientation="vertical" android:layout_gravity="center">
+ some more stuff here I dont think it's relevant
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我有一些问题从Immersive Mode返回ActionBarActivity.我创建了一个简单的应用来说明这个问题.有一个按钮可以切换沉浸式模式.当从沉浸式模式"返回"时,操作栏从其原始位置向下偏移,大致相同的距离,通常偏离屏幕顶部.
我在运行Lollipop的Nexus 4上尝试过这个.这种行为在Lollipop之前没有发生.
一个简单的ActionBarActivity说明了这个问题:
public class MainActivity extends ActionBarActivity {
private boolean immersed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void enterImmersiveMode() {
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
immersed = true;
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void leaveImmersiveMode() {
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
immersed = false;
// recreate();
}
}
public void toggleImmersive(View …Run Code Online (Sandbox Code Playgroud) android android-support-library android-fullscreen android-5.0-lollipop
我已经用这个问题撞了桌子3天了,请告诉我我误入歧途的地方.
当我收到传入的VoIP电话时,我正在尝试显示全屏通知,就像PhoneApp那样.如果用户处于身临其境的活动中,我可以抬起头来.但是,我只收到抬头通知,并且从未获得全屏.我也需要通知忽略锁定屏幕.
这是我在做的事情:
String callJson = call.toJson(uber).toString();
uber.requestWakeState(UberVoice.WAKE_STATE_FULL);
final Notification.Builder builder = new Notification.Builder(uber);
builder.setSmallIcon(R.drawable.switch_notification);
if (image != null) {
builder.setLargeIcon(image);
}
builder.setOngoing(true);
PendingIntent inCallPendingIntent =
PendingIntent.getActivity(uber, 234,
UberVoice.createInCallIntent(), 0);
builder.setContentIntent(inCallPendingIntent);
builder.setContentText(body);
builder.setUsesChronometer(false);
builder.setContentTitle(title);
builder.setCategory(Notification.CATEGORY_CALL);
builder.setVisibility(Notification.VISIBILITY_PUBLIC);
builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE), AudioManager.STREAM_RING);
builder.setVibrate(new long[]{500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500});
builder.setPriority(Notification.PRIORITY_MAX);
builder.setTicker(title);
builder.setFullScreenIntent(inCallPendingIntent, true);
builder.addAction(R.drawable.hangup_action, "Reject", CallService.getPendingIntent(uber, callJson, CallService.REJECT));
builder.addAction(R.drawable.answer_action, "Answer", CallService.getPendingIntent(uber, callJson, CallService.ANSWER));
NotificationManager notificationManager = (NotificationManager) uber.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = builder.build();
notificationManager.notify(INCOMING_CALL_NOTIFICATION_ID, notification);
Run Code Online (Sandbox Code Playgroud)
这是creatCallIntent代码:
public …Run Code Online (Sandbox Code Playgroud) 我有一个自定义相机应用程序,我想要任何预览尺寸以全屏模式显示它而不拉伸相机预览图像.对于这一点,我需要做的surfaceView大于屏幕,以保持宽高比,所以实际上用户将看到小于照相机实际拍摄.
出于某种原因,我无法使SurfaceView屏幕尺寸大于屏幕尺寸.
到目前为止我尝试过的:
调整surfaceChanged方法中的相机预览
调整on onMeasure方法中的相机预览
onLayout FLAG_LAYOUT_NO_LIMITS到活动 - 信息clipChildren 用于表面视图 - 信息android:layout_width="852px" getWindow().setLayout(852, 1280); 在活动中但是没有任何成功 - 每次的行为都是一样的:它看起来好一秒钟,然后就会拉长.
这是代码:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private static final int CAMERA_ROTATE_ANGLE = 90;
private SurfaceHolder cameraHolder;
private Camera androidHardCamera;
private Context context;
public CameraPreview(Context context) {
super(context);
this.context = context;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我想全屏运行.如果我有一个4.4 KitKat设备,很容易设置SYSTEM_UI_FLAG_IMMERSIVE使应用程序纯净全屏.但是,如果我有一个API低于4.4的设备.我不知道如何使它全屏,好像它是一个Immersive支持的KitKat.
我可以设置全屏,并隐藏导航标记以使应用程序全屏显示,但是一旦点击屏幕,这些标志就会重置,现在将显示导航栏和状态栏.
有没有一种解决方案,我可以在JB和可能的ICS(下面不是必须的)设备上"模拟"沉浸式模式.
我有一个方法hideSystemUI,它在OnSystemUiVisibilityChangeListener当前看起来像这样的触发器时运行.
private void hideSystemUI() {
actionBar.hide();
isMenuVisible = false;
if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
else{
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要进行哪些更改才能使应用程序全屏显示,并且不会在每次点击时显示导航栏和状态栏,而是从顶部或底部显示幻灯片.
android fullscreen android-4.2-jelly-bean android-fullscreen android-4.4-kitkat
我见过某些应用程序,特别是大多数游戏(例如,愤怒的小鸟,Temple Run等)在启动时全屏和横向模式运行.它们的方向永远不会改变,触摸屏幕时它们永远不会退出全屏.怎么做的?我需要更改或编码哪些属性?
我有两个问题:
我已经尝试了很多,仍在努力实现这一目标,但无法找到解决方案.
我找到的解决方案列表,但它们没有满足我的要求
这只隐藏了通知栏.
requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)
getWindow()setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN).
也只隐藏通知栏
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
Run Code Online (Sandbox Code Playgroud)它低配置导航栏没有隐藏它.
.getWindow()getDecorView()setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE).
对我的活动没有影响.
anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
注意:
在我的研究和你的答案之后,我得到了这个:

但我的应用程序看起来应该没有导航栏:

我不希望我的应用程序中显示系统导航栏.
目前我正在使用低调模式隐藏顶部黑条并调暗底部导航栏.我想在Android上使用Immersive模式,但我遇到了操作栏的问题.我想做Immersive模式粘性但保持操作栏应该在哪里.有没有办法做到这一点?
这是我到目前为止所做的工作,除了它隐藏了动作栏之外.
@TargetApi(19)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
if (android.os.Build.VERSION.SDK_INT >= 19) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何建议都会很精彩.谢谢.
我正在尝试构建一个全屏应用程序,当我在Acer Iconia 8中运行它时,标题不显示但操作按钮仍然显示:
AndroidManifest.xml中
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
和风格:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
编辑:
主要活动类别:
public class MainActivity extends AppCompatActivity {
private Context context;
private WebView webView;
private LoginDialog dialog;
private PinDialog pin;
private RelativeLayout mainLayout;
@Override …Run Code Online (Sandbox Code Playgroud)