将ImageView放在屏幕的底部

时间:2013-10-06 17:14:42

标签: android android-layout

我正在尝试使用以下XML将ImageView放在布局的底部:

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            tools:context=".MainActivity" >
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#EEEEEE"
                android:gravity="center"
                android:orientation="horizontal" >
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom"
                    android:src="@drawable/photo" />
            </LinearLayout>
        </LinearLayout>

我按照http://sandipchitale.blogspot.co.uk/2010/05/linearlayout-gravity-and-layoutgravity.html

中的说明操作

唯一的区别是我在这里使用ImageView而不是Button:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/Button03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:text="bottom" >
        </Button>
    </LinearLayout>
</LinearLayout>

将按钮放在预期位置:

enter image description here

不幸的是,在帖子顶部的我的XML中并非如此。 ImageView没有放在底部,因为参考XML中的Button是。

enter image description here

为什么会发生这种情况?

5 个答案:

答案 0 :(得分:5)

您应该在ImageView中更改设置,在ImageView上精确设置android:scaleType="fitEnd"

其他答案似乎是解决方法,包括您自己的答案。这对于布局来说不是问题,但是当图像和屏幕的尺寸不相似时,在ImageView内部加载图像(即宽度/高度比非常不同)。默认情况下,它会将图像加载到ImageView的中间。

答案 1 :(得分:4)

尝试使用RelativeLayout而不是LinearLayout,并使用参数android:layout_alignParentBottom = "true"

编辑:尝试为包含ImageView的LinearLayout提供layout_height和layout_width作为wrap_content。

或者可能是您正在使用的图像上方和下方都有额外的空间。

<强>更新

问题在于图像的大小。它比屏幕尺寸大得多。我建议您使用以下代码以编程方式读取设备的屏幕尺寸:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

并以编程方式设置imageView的高度和宽度,如下所示:

image_view.getLayoutParams().height = height - 50;
image_view.getLayoutParams().width = width - 50;

答案 2 :(得分:1)

在相对布局中尝试此内容

<ImageView
    android:id="@+id/imageView9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:adjustViewBounds="?attr/isLightTheme"
    app:srcCompat="@drawable/client_app_footer" />

测试&amp;按预期工作

答案 3 :(得分:0)

你没有在你的imageview中包含android:layout_gravity =“bottom”行。

答案 4 :(得分:0)

我已将照片尺寸从宽度2560调整为宽度270,最后ImageView进入底部。