Android 从全屏活动返回时,UI向下移动。如何不显示这一点?
MainActivity启动FullActivity(没有状态栏)。当用户按下FullActivity上的后退按钮时,FullActivity将被取消,MainActivity将再次显示 问题在于,当MainActivity再次显示时,似乎MainActivity正在从全屏过渡到普通屏幕。整个UI将按状态栏的高度向下移动。这看起来很烦人。我从来没有想过主要活动是全屏的。为什么会发生这种情况,我该如何防止 简而言之,我希望主活动保持正常,永远不要全屏显示 根据对类似问题的回答,我尝试将以下代码添加到MainActivity的onCreate中,但没有成功Android 从全屏活动返回时,UI向下移动。如何不显示这一点?,android,android-activity,Android,Android Activity,MainActivity启动FullActivity(没有状态栏)。当用户按下FullActivity上的后退按钮时,FullActivity将被取消,MainActivity将再次显示 问题在于,当MainActivity再次显示时,似乎MainActivity正在从全屏过渡到普通屏幕。整个UI将按状态栏的高度向下移动。这看起来很烦人。我从来没有想过主要活动是全屏的。为什么会发生这种情况,我该如何防止 简而言之,我希望主活动保持正常,永远不要全屏显示 根据对类似问题的回答,我尝试将以下代码添
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
我在Nexus7(2013)和Android 6.0.1上对此进行了测试
MainActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button full = (Button)findViewById(R.id.full);
full.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent i = new Intent(MainActivity.this, FullActivity.class);
startActivity(i);
}
});
}
}
public class FullActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int flags = WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setFlags(flags, flags);
TextView hello = new TextView(this);
hello.setText("Press the back button to dismiss me.");
setContentView(hello);
}
}
FullActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button full = (Button)findViewById(R.id.full);
full.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent i = new Intent(MainActivity.this, FullActivity.class);
startActivity(i);
}
});
}
}
public class FullActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int flags = WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setFlags(flags, flags);
TextView hello = new TextView(this);
hello.setText("Press the back button to dismiss me.");
setContentView(hello);
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.me.test2"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:theme="@style/Theme.AppCompat.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".FullActivity"/>
</application>
</manifest>
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:text="Show full screen activity"
android:id="@+id/full"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ListView
android:entries="@array/list_items"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="1dp"></ListView>
</LinearLayout>
strings.xml
<resources>
<string name="app_name">Test2</string>
<string-array name="list_items">
<item>Homer</item>
<item>Marge</item>
<item>Bart</item>
<item>Lisa</item>
<item>Maggie</item>
<item>Santa\'s Little Helper</item>
<item>Snowball II</item>
<item>Flanders</item>
<item>Moe</item>
</string-array>
</resources>
测试2
荷马
玛吉
巴特
丽莎
麦琪
圣诞老人的小助手
雪球II
佛兰德斯
教育部
我认为您应该在全屏活动中覆盖onBackPressed方法:
@Override
public void onBackPressed() {
//Clear the Flag fullscreen flag before finishing the activity
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
overridePendingTransition(0,0); //(0, 0) value is used for suppressing the animation while transitioning from one activity to another
finish(); //For finishing the current activity. You can even setResult and use finishActivity(requestCode) if you have started the current Activity for some result
}
全屏删除int flags=WindowManager.LayoutParams.FLAG\u;getWindow().setFlags(标志,标志);从FullActivity.class或您可以在MainActivity.class中添加相同的内容,这样UI将不会移动,因为它现在正在移动删除全屏活动中的全屏标志或在MainActivity中添加相同的内容根本没有意义。这是不相关的回答,因为它不符合提问者的要求。请看下面我的答案!