Android LinearLayout ImageView是否将视图推离屏幕?

Android LinearLayout ImageView是否将视图推离屏幕?,android,android-layout,layout,imageview,Android,Android Layout,Layout,Imageview,所以,就我的一生而言,我似乎无法找出一个简单的布局问题。我希望也许一双新的眼睛能帮我摆脱困境 问题:我在垂直线性布局中有三个视图。 文本视图 需要保留纵横比且AdjustViewBounds设置为true和wrap content的ImageView。(如果将布局权重设置为ImageView,则纵横比似乎被破坏) 另一个文本视图 我不能使用自定义视图,因为这是一个小部件 问题是,当可用空间太小时,ImageView会将底部文本视图推到屏幕外,而我所寻找的预期结果是ImageView会调整大小

所以,就我的一生而言,我似乎无法找出一个简单的布局问题。我希望也许一双新的眼睛能帮我摆脱困境

问题:我在垂直线性布局中有三个视图。

  • 文本视图
  • 需要保留纵横比且AdjustViewBounds设置为true和wrap content的ImageView。(如果将布局权重设置为ImageView,则纵横比似乎被破坏)
  • 另一个文本视图
我不能使用自定义视图,因为这是一个小部件

问题是,当可用空间太小时,ImageView会将底部文本视图推到屏幕外,而我所寻找的预期结果是ImageView会调整大小以适应两个文本视图,使它们尽可能长时间地保持在查看区域内。通过将布局权重设置为ImageView,我可以获得所需的效果,但由于某些原因,这会破坏纵横比。

左边是预期结果。但是,当尺寸太高时,会丢失纵横比。

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <TextView
        android:paddingBottom="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>

    <ImageView
        android:contentDescription="@string/app_name"
        android:src="@drawable/sunny"
        android:scaleType="fitXY"
        android:cropToPadding="true"
        android:adjustViewBounds="true"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"/>

    <TextView
        android:paddingTop="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>
</LinearLayout>

示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <TextView
        android:paddingBottom="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>

    <ImageView
        android:contentDescription="@string/app_name"
        android:src="@drawable/sunny"
        android:scaleType="fitXY"
        android:cropToPadding="true"
        android:adjustViewBounds="true"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"/>

    <TextView
        android:paddingTop="8dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>
</LinearLayout>
文本视图被推出屏幕,而ImageView没有调整大小以适应它:

图像视图设置为
layout\u weight=“1”
layout\u height=“0dp”
。它现在可以根据需要调整大小以适应底部文本视图,但会丢失其纵横比:


图像视图设置为
layout\u weight=“1”
layout\u height=“0dp”
scaleType=“fitCenter”
。这将保留纵横比,同时仍然调整大小以适应底部文本视图。但是有额外的空白,文本视图不再靠近图像。


任何帮助都将不胜感激。希望我能充分解释这个问题。谢谢你:)


内森

试试这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="100"
    android:gravity="center">
    <TextView
        android:paddingBottom="8dp"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="20"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>

    <ImageView
        android:contentDescription="@string/app_name"
        android:src="@drawable/sunny"
        android:scaleType="fitXY"
        android:cropToPadding="true"
        android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="60"/>

    <TextView
        android:paddingTop="8dp"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="20"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textSize="12sp"
        android:text="Text"/>
</LinearLayout>


您好,谢谢您的回复!不幸的是,这造成了与我文章中的第二幅图像类似的东西。宽高比没有被保留,顶部的文本视图在它和实际图像之间有很多额外的空白。你到底需要显示什么?不是完全从你的问题中得到的。请详细说明。