LinearLayout ImageView将视图推离屏幕?

时间:2017-06-01 23:05:15

标签: android android-layout layout imageview

因此,对于我的生活,我似乎无法弄清楚什么似乎是一个简单的布局问题。我希望也许一双新鲜的眼睛可以帮助我。

问题:我在垂直LinearLayout中有三个视图。

  • TextView
  • 需要通过将AdjustViewBounds设置为true并包装内容来保持其宽高比的ImageView。 (如果布局权重设置为ImageView,则宽高比似乎会中断)
  • 另一个TextView

我不能使用自定义视图,因为这是一个Widget。

问题是,当可用空间太小时,ImageView将屏幕下方的TextView推到我想要的预期结果是ImageView调整大小以适应两个TextViews保留它们尽可能在观看区域内。我可以通过设置为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>

示例:

当ImageView没有调整大小以适应它时,TextView被推出屏幕:

ImageView设置为layout_weight="1"layout_height="0dp"。它现在调整大小以适应底部的TextView,但会失去其宽高比:

ImageView设置为layout_weight="1"layout_height="0dp"scaleType="fitCenter"。这样可以保留纵横比,同时还可以调整大小以适应底部的TextView。但是有额外的空格,TextView不再靠近图像。
enter image description here

非常感谢任何帮助。希望我充分解释了这个问题。谢谢:))!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<?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>