Android 从全屏活动返回时,UI向下移动。如何不显示这一点?

Android 从全屏活动返回时,UI向下移动。如何不显示这一点?,android,android-activity,Android,Android Activity,MainActivity启动FullActivity(没有状态栏)。当用户按下FullActivity上的后退按钮时,FullActivity将被取消,MainActivity将再次显示 问题在于,当MainActivity再次显示时,似乎MainActivity正在从全屏过渡到普通屏幕。整个UI将按状态栏的高度向下移动。这看起来很烦人。我从来没有想过主要活动是全屏的。为什么会发生这种情况,我该如何防止 简而言之,我希望主活动保持正常,永远不要全屏显示 根据对类似问题的回答,我尝试将以下代码添

MainActivity启动FullActivity(没有状态栏)。当用户按下FullActivity上的后退按钮时,FullActivity将被取消,MainActivity将再次显示

问题在于,当MainActivity再次显示时,似乎MainActivity正在从全屏过渡到普通屏幕。整个UI将按状态栏的高度向下移动。这看起来很烦人。我从来没有想过主要活动是全屏的。为什么会发生这种情况,我该如何防止

简而言之,我希望主活动保持正常,永远不要全屏显示

根据对类似问题的回答,我尝试将以下代码添加到MainActivity的onCreate中,但没有成功

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中添加相同的内容根本没有意义。这是不相关的回答,因为它不符合提问者的要求。请看下面我的答案!