将ImageView放在屏幕的底部

Mat*_*tko 1 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>
Run Code Online (Sandbox Code Playgroud)

我按照此处的说明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>
Run Code Online (Sandbox Code Playgroud)

这把按钮放在预期的位置:

在此输入图像描述

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

在此输入图像描述

任何想法为什么会发生?

小智 5

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

编辑:尝试将 layout_height 和 layout_width 作为 wrap_content 用于保存 ImageView 的 LinearLayout。

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

更新:

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

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
Run Code Online (Sandbox Code Playgroud)

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

image_view.getLayoutParams().height = height - 50;
image_view.getLayoutParams().width = width - 50;
Run Code Online (Sandbox Code Playgroud)


Seb*_*oek 5

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

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