如何在Android的RelativeLayout中调整ImageView的高度

时间:2019-01-16 17:37:29

标签: android android-imageview scale android-relativelayout

我创建了一个视图来显示包含以下内容的错误:

  • 图片
  • 说明文本
  • “重试” 按钮

说明文本必须完整显示:显示3行。 “重试” 按钮具有固定的高度,也必须可见。 图像必须根据可用空间进行调整。

目前,该文本尚未完全显示:仅可见两行。图片的大小似乎还不够缩小...

此视图基于RelativeLayout,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@color/color_white">

    <ImageView
        android:id="@+id/ErrorImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter"
        android:adjustViewBounds="true"
        android:layout_marginTop="@dimen/cards_error_image_margin_top"
        android:layout_centerHorizontal="true"/>

    <TextView
        android:id="@+id/ErrorTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/ErrorImageView"
        android:layout_marginHorizontal="@dimen/cards_error_text_margin_horizontal"
        android:layout_marginTop="@dimen/cards_error_text_margin_top"
        style="@style/CustomFont30Marine"
        android:gravity="center_horizontal"/>

    <Button
        android:id="@+id/RetryButton"
        android:layout_width="@dimen/cards_error_retry_button_width"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="@dimen/cards_error_retry_button_margin_bottom"
        style="@style/WhiteCustomButton"/>

</RelativeLayout>

有没有一种方法可以通过设计器实现?还是我需要以编程方式调整图像大小?

预期结果如下:

Expected result

实际结果如下:

Actual result

2 个答案:

答案 0 :(得分:0)

已尝试按照您的要求复制设计。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>

<ImageView
    android:id="@+id/ErrorImageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true"
    android:layout_above="@id/ErrorTextView"
    android:background="@mipmap/ic_launcher"
    android:layout_marginTop="10dp"
    android:layout_centerHorizontal="true"/>

<TextView
    android:id="@+id/ErrorTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name"
    android:lines="3"
    android:layout_centerHorizontal="true"
   android:layout_above="@id/RetryButton"
    android:layout_marginHorizontal="10dp"
    android:layout_marginTop="10dp"

    android:gravity="center_horizontal"/>

<Button
    android:id="@+id/RetryButton"
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="10dp"
    />

   </RelativeLayout>

希望这会有所帮助。

答案 1 :(得分:0)

尝试

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@color/color_white"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/ErrorImageView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/cards_error_image_margin_top"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter" />

    <TextView
        android:id="@+id/ErrorTextView"
        style="@style/CustomFont30Marine"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/cards_error_text_margin_top"
        android:gravity="center_horizontal" />

    <Button
        android:id="@+id/RetryButton"
        style="@style/WhiteCustomButton"
        android:layout_width="@dimen/cards_error_retry_button_width"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/cards_error_retry_button_margin_bottom" />

</LinearLayout>