调整 ImageView 的大小以使整个布局填满屏幕

Posted

技术标签:

【中文标题】调整 ImageView 的大小以使整个布局填满屏幕【英文标题】:Resize ImageView to make entire layout fill screen 【发布时间】:2014-12-14 19:22:46 【问题描述】:

我有一个包含一些 TextViews 和一个 ImageView 的屏幕,它位于具有垂直方向的 LinearLayout 中。我希望整个东西完全适合屏幕(无论它的大小是多少),其中 ImageView 是可以自我调整以适应这种情况的屏幕。

我在这里看到了这个问题的一些变体(包括this),但没有找到真正满足我要求的任何内容。

到目前为止,我使用了一个不是很“漂亮”的解决方案,即将整个 LinearLayout 放在一个 ScrollView 中,并使用自定义 ImageView 在其 onMeasure 方法上计算两者之间的增量ScrollView 的高度到屏幕的高度。如果前者大于后者,则从 ImageView 的测量高度中减去 delta。

这个解决方案并不完美,我真的很想知道是否有更好的解决方案。我确定有。

感谢您的帮助。

编辑:这是布局xml

<com.xxx.widgets.LockableScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res/com.venews"
    android:layout_
    android:layout_
    custom:scrollable="false"
    android:fillViewport="true">

<LinearLayout
    android:layout_
    android:layout_
    android:paddingLeft="@dimen/login_horizontal_margin"
    android:paddingRight="@dimen/login_horizontal_margin"
    android:orientation="vertical">

    <com.xxx.widgets.ResizableToFitScreenImageView android:id="@+id/login_logo_image"
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/login_logo_margin"
        android:layout_marginBottom="@dimen/login_logo_margin"
        android:src="@drawable/ic_logo_and_name"/>

    <RelativeLayout
        android:layout_
        android:layout_>

        <TextView android:id="@+id/login_username"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"/>

        <TextView android:id="@+id/login_password"
            android:layout_
            android:layout_
            android:layout_below="@id/login_username"/>

        (...Other stuff...)

    </RelativeLayout>

</LinearLayout>

</com.xxx.widgets.LockableScrollView>

EDIT2:这是一个我希望能让事情更清楚的草图。

草图显示了 2 种不同的屏幕尺寸,因为此解决方案还需要支持具有不同屏幕尺寸的不同设备。

【问题讨论】:

你能发布你的xml吗? 很难理解您想要实现的目标,能否请您发布您想要的 UI 草图? @warl0ck08 编辑了我的问题。 @Egor 编辑了我的问题 2 图像视图上的 adjustViewImageBounds = true 没有为您调整大小的任何特殊原因? 【参考方案1】:

在 ImageView 上,设置 android:layout_height="0dp"android:layout_weight="1"。这将导致它填充剩余空间(更多关于 layout_weight here)。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <ImageView
        android:layout_
        android:layout_
        android:layout_weight="1"/>

    <TextView
        android:layout_
        android:layout_/>

    <TextView
        android:layout_
        android:layout_/>

</LinearLayout>

【讨论】:

嗯,这只是简单的尴尬......有时我只是过于复杂的东西。非常感谢您提供的非常简单的答案。

以上是关于调整 ImageView 的大小以使整个布局填满屏幕的主要内容,如果未能解决你的问题,请参考以下文章

自动布局内在内容大小以填满屏幕

如何动态调整单个 UIStackView 的行高以填满整个屏幕?

iOS UIImageView 调整大小问题

我的布局键盘上的空格按钮大小不会调整大小

为啥背景图片没有填满整个div

17.响应式布局