使用LinearLayout显示可变数量的图像

时间:2017-05-26 15:00:30

标签: android android-layout imageview android-linearlayout

在LinearLayout中,我试图使用数字图像显示整数。我想要将数字居中,并根据存在的位数来缩放图像。

我的初始布局有两位数:

<LinearLayout 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"
>

<view
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal"
    android:gravity="center"
    >
    <ImageView
        app:srcCompat="@drawable/ic_digit_0"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:layout_weight="1"
        />
    <ImageView
        app:srcCompat="@drawable/ic_digit_0"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:layout_weight="1"
        />
</LinearLayout>

这就是它的样子。

A)4位数字,一切看起来都很好,数字水平放置,垂直尽可能高。

4 digits scaled to fit

B)如果有更多数字,它仍可以很好地扩展到可用空间。

many more digits scale nicely

C)但是当 LinearLayout 高度降低时,4位数字会分开,并且它们之间会出现间隙。

images have separated

D)从每个 ImageView 中删除 layout_weight ,这4位数字会一起返回。

digits come back together

E)但是当 LinearLayout 高度增加时,数字会缩放到视图的整个高度,而某些数字会在屏幕上水平消失。

digits too large

如何调整这些数字图像以填充可用空间,显示所有数字并无间隙居中,同时保留其比例比例,无论 LinearLayout 尺寸如何?

感谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试过添加scaletype?

<ImageView android:scaleType="scaleXY" android:src="@drawable/my_image"/>

https://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType

答案 1 :(得分:0)

确定。我找到了答案。

对于第二个 LinearLayout ,更改 android:layout_width = 来自&#34; match_parent &#34;到&#34; wrap_content &#34;。然后添加 android:layout_gravity =&#34; center&#34; 。当较小的高度强制数字缩小时,这允许 LinearLayout 缩小到其内容。但是,当它缩小时,它也会在包含视图中居中。

感谢大家的投入。