【问题标题】:Is it possible to make an ImageView cover the whole screen, if it's contained in a fragment in a ViewPager that doesn't cover the whole screen?如果 ImageView 包含在不覆盖整个屏幕的 ViewPager 的片段中,是否可以使 ImageView 覆盖整个屏幕?
【发布时间】:2020-07-19 17:47:49
【问题描述】:

我在ConstraintLayout 的活动布局中使用ViewPager。这个ViewPager 受到约束,以便显示在同级小部件下方。这个ViewPager,所以,并没有覆盖整个屏幕。

但是,在这个ViewPager的片段中,有一个ImageView必须要全屏显示。这个ImageView 在这个ViewPager 的每个片段中都是唯一的(这意味着每个ImageView 实际上必须包含在每个ViewPager 的片段中)。

问题是:由于这个ImageView 是在不覆盖整个屏幕的ViewPager 的片段中,所以不可能对这个ImageView 使用类似match_parent 的东西,因为它会匹配ViewPager 显然不会覆盖整个屏幕(因为它显示在同级小部件下方)。

我该怎么做才能让ImageView 填满整个屏幕?

【问题讨论】:

    标签: android android-layout android-fragments android-viewpager android-constraintlayout


    【解决方案1】:

    当您在视图分页器中显示 imageView 片段时,您可以通过编程方式更改约束。这里有一个简单的例子

    ConstraintLayout: change constraints programmatically

    【讨论】:

    • 我正在尝试,但似乎无法以编程方式定义 ViewPager 的项目小部件和容器小部件(还包含 ViewPager 的容器)之间的约束。
    • 我认为您必须在打开 imageView 时将所有 viewPager 约束更改为所有屏幕的 matchConstraint
    【解决方案2】:

    片段.xml

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <androidx.viewpager2.widget.ViewPager2
                android:id="@+id/viewPagerImage"
                android:layout_width="0dp"
                android:layout_height="0dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    viewpger_item.xml

    <androidx.constraintlayout.widget.ConstraintLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/imgPool"
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:scaleType="fitXY"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    【讨论】:

    • android:layout_margin="@dimen/_10sdp"Viewpager 上使用会阻碍ImageView 覆盖整个屏幕,不是吗?
    • 您可以删除该边距。我从我的工作代码中添加了这段代码,这就是它存在的原因
    • 感谢您的回答。但是,我实际上需要设置ViewPager的项目ImageView覆盖屏幕,但ViewPager不能覆盖整个屏幕(所以margin很好,但你的解决方案没有解决问题)。我认为这是不可能的。但是我真的必须做这个 UI。我正在尝试另一件事,我将创建一个新问题。
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2019-11-02
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多