ImageView的不会填父(ImageView won't fill parent)

2019-06-26 08:01发布

我有我的屏幕之一滚动型。 我想右边缘有一个阴影。 我决定这样做是为了使滚动型的RelativeLayout的孩子,有RelativeLayout的两个孩子最简单的方法 - 一个是LinearLayout中,将容纳屏幕的布局,第二是观影。

是这样的...

<ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbars="none" >

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >
                <!-- stuff -->
                </LinearLayout>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:src="@drawable/shadow"
                    android:layout_alignParentRight="true"
                    />
            </RelativeLayout>
        </ScrollView>

不幸的是,这完全不是那么回事。 该ImageView的迫使其尺寸为图像文件的大小。 它不会垂直拉伸是RelativeLayout的高度。 我也试过“match_parent”无济于事。 该图像是一个9补丁。

想法?

Answer 1:

应用可绘制的内容作为源ImageView有点与它承载您想要的视图竭尽所能,以适应内容,而不会非常修改内容本身的内在要求。 通常,这是你想出来的行为ImageView

你真正想要的是你通过设置绘制内容的获取行为background的视图,为你并不真正需要的ImageView都没有。 甲背景被设计成简单地伸展,填充等,以任何尺寸的视图。 此外,由于您使用RelativeLayout你可以告诉视图通过增加以匹配绑定你的阴影视图的id和一些额外的layout_align参数。

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <LinearLayout
                android:id="@+id/content_layout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
            <!-- stuff -->
            </LinearLayout>

            <View
                android:layout_width="11dp"
                android:layout_height="fill_parent"
                android:layout_alignParentRight="true"
                android:layout_alignTop="@id/content_layout"
                android:layout_alignBottom="@id/content_layout"
                android:background="@drawable/shadow"
                />
        </RelativeLayout>


Answer 2:

试试这个

<ImageView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="@drawable/ic_launcher"
                android:scaleType="fitXY"
                android:layout_alignParentRight="true"
                />

这里是我所得到的

和代码ID

<?xml version="1.0" encoding="utf-8"?>

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:scrollbars="none" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <!-- stuff -->
        </LinearLayout>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="fitXY" />
    </RelativeLayout>
</ScrollView>



Answer 3:

您的问题,无关与ImageView或9补丁本身,而是与你包裹在一个一切事实ScrollView 。 一个ScrollView将自动强制其直接子包的内容,无论你告诉它FILL_PARENTMATCH_PARENT -无论是做完全的方式同样的事情; 唯一的区别是名称,该名称更好地反映了标志的实际行为。

幸运的是ScrollView提供了一种方法来迫使它以填补一个标志,这将使相当类似设置的行为视FILL_PARENT到普通视图。 无论是添加属性android:fillViewport或使用setFillViewport()的代码。

编辑:只是要清楚,你需要设置该标志上的ScrollView 。 此外,如果它是ScrollView应该有阴影,你能不能把你的9补丁作为背景呢? 我想这确实取决于你的实际形象是什么样子。 关于您发表评论:是的,RelativeLayout的是灵活的位置和大小的孩子而言,但任何一个孩子仍然会被绑定到其母公司的大小。

我确实有一些人可能对一些比你心里有什么不同的是工作的感觉。 这肯定会有助于澄清事情用一个简单的图。



Answer 4:

你想对你的形象权的阴影,然后用单布局, Horizontal Orientation ,这是很好的,你必须决定使用相对布局。 使用

android:orientation="vertical"

这种布局内,加这两个图像。 如果您还有疑问,给我那两个图像或样本图像,我会给你的代码



文章来源: ImageView won't fill parent