Android 将ImageView置于屏幕底部

Android 将ImageView置于屏幕底部,android,android-layout,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:layou

我试图使用以下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>
我正在按照这里的说明进行操作

唯一的区别是我使用ImageView而不是按钮,如下所示:

<?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>
将按钮置于预期位置:

不幸的是,我在文章顶部的XML中不是这样。ImageView不像引用XML中的按钮那样放在底部


你知道为什么会这样吗?

你的imageview中没有包含android:layout\u gravity=底线。

你的imageview中没有包含android:layout\u gravity=底线。

尝试使用RelativeLayout而不是LinearLayout,并使用参数android:layout\u alignParentBottom=true

编辑:尝试为保存图像视图的线性布局指定布局高度和布局宽度作为包裹内容

或者,您正在使用的图像上下都有额外的空间

更新:

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

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;

尝试使用RelativeLayout而不是LinearLayout,并使用参数android:layout\u alignParentBottom=true

编辑:尝试为保存图像视图的线性布局指定布局高度和布局宽度作为包裹内容

或者,您正在使用的图像上下都有额外的空间

更新:

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

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;

我已经将照片大小从2560调整到270,最后ImageView进入底部

我已经将照片大小从2560调整到270,最后ImageView进入底部

您应该在ImageView本身中更改一个设置,精确地说,就是在ImageView上设置android:scaleType=fitEnd


其他答案似乎是变通办法,包括你自己的答案。这不是布局的问题,而是当图像和屏幕的尺寸不相似(即宽高比非常不同)时,图像在ImageView中的加载位置。默认情况下,它将在IVIEVIEW的中间加载图像。 您应该在ImageView本身中更改一个设置,精确地说,就是在ImageView上设置android:scaleType=fitEnd


其他答案似乎是变通办法,包括你自己的答案。这不是布局的问题,而是当图像和屏幕的尺寸不相似(即宽高比非常不同)时,图像在ImageView中的加载位置。默认情况下,它将在IVIEVIEW的中间加载图像。 试试这个内部相对布局

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

测试并按预期工作

尝试此内部相对布局

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

测试并按预期工作

一开始我忘了粘贴它。我已经更新了问题-添加了布局重力=bottom线。但效果还是一样的。图像不在显示的底部。您可以使用RelativeLayout而不是Linear,然后使用android:layout\u alignParentBottom=true将图像在底部对齐。我刚开始忘记粘贴它。我已经更新了问题-添加了布局重力=bottom线。但效果还是一样的。图像不在显示的底部。您可以使用RelativeLayout而不是Linear,然后使用android:layout\u alignParentBottom=true将图像底部对齐。将fill\u parent更改为wrap\u内容没有帮助。图像周围没有任何额外的空间。好的,您可以粘贴正在使用的图像吗?我将尝试自己检查代码。这是一张图片,我绝对希望有一个解决方案,可以接受宽度大于设备屏幕的图片。将“填充父对象”更改为“换行内容”没有帮助。图像周围没有任何额外的空间。好的,你能粘贴你正在使用的图像吗?我将尝试自己检查代码。这是一张图片,我肯定希望有一个解决方案,可以接受宽度大于设备屏幕的图片。这是最好的答案。非常感谢。根据Android文档计算出一个比例,该比例将保持原始src纵横比,但也将确保src完全适合dst。至少有一个轴X或Y将精确匹配。结束将结果与dst的右边缘和下边缘对齐。这是最好的答案。非常感谢。根据Android文档计算出一个比例,该比例将保持原始src纵横比,但也将确保src完全适合dst。至少有一个轴X或Y将精确匹配。结束将结果与dst的右边缘和下边缘对齐。