当活动进入全屏模式时,如何阻止布局更改大小?

时间:2018-09-22 07:21:46

标签: android

我有一个活动,使用ViewPAger显示图像滑块。默认情况下,活动处​​于全屏模式。当我单击ImageView时,全屏模式(如果启用)将被禁用,而如果禁用则启用。我正在使用下面的代码来实现这一目标。

启用全屏模式的代码

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

和代码以禁用全屏模式

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

它工作正常,但问题是我的布局尺寸被更改了,如何解决?我想要像Google照片一样的东西。

full screen mode enabled

full screen mode disabled

我希望在活动处于全屏模式时显示与第二张图片相同的图片。

这是我的主要活动布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/navigationBarColor">

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    />

<LinearLayout
    android:id="@+id/back_lay"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:visibility="gone"
    android:background="#26808080"
    android:gravity="center_vertical">

    <ImageView
        android:id="@+id/back"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:src="@drawable/ic_back" />

</LinearLayout>

<LinearLayout
    android:id="@+id/lay"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:gravity="bottom"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:weightSum="2"
    android:visibility="gone">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:background="#26808080"
        android:gravity="center">

        <ImageView
            android:id="@+id/share"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/ic_share" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:background="#26808080"
        android:gravity="center">

        <ImageView
            android:id="@+id/delete"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/ic_delete" />

    </LinearLayout>
</LinearLayout>
</RelativeLayout>

这是我的适配器项目布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/relative_container"
android:background="@color/navigationBarColor">


    <com.example.hp.mygallery.CommonFiles.TouchImageView
        android:id="@+id/imgDisplay"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/ic_image"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"/>


    <LinearLayout
        android:id="@+id/back_lay"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:visibility="gone"
        android:background="#26808080"
        android:gravity="center_vertical">

        <ImageView
            android:id="@+id/back"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:src="@drawable/ic_back" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/lay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:gravity="bottom"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:weightSum="2"
        android:visibility="gone">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="#26808080"
            android:gravity="center">

            <ImageView
                android:id="@+id/share"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/ic_share" />


        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="#26808080"
            android:gravity="center">

            <ImageView
                android:id="@+id/delete"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/ic_delete" />


        </LinearLayout>


    </LinearLayout>

    <LinearLayout
        android:id="@+id/play_lay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:visibility="gone">

        <ImageView
            android:id="@+id/play"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:scaleType="centerCrop"
            android:src="@drawable/ic_play"
            android:layout_marginBottom="5dp"/>

    </LinearLayout>

</FrameLayout>

1 个答案:

答案 0 :(得分:0)

要启用全屏模式使用,

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_IMMERSIVE_STICKY);

要禁用全屏模式,请使用

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
                                | View.SYSTEM_UI_FLAG_IMMERSIVE);