Как настроить высоту ImageView в RelativeLayout в Android - PullRequest
0 голосов
/ 16 января 2019

Я создал представление для отображения ошибок, которое содержит:

  • и изображение
  • описание текст
  • a "Повторить попытку" кнопка

Описание текст должно отображаться полностью: оно отображается в 3 строки. Кнопка «Повторить» имеет фиксированную высоту и также должна быть видна. Размер должен быть изменен в соответствии с доступным пространством.

На данный момент текст отображается не полностью: видны только 2 строки. Кажется, что размер изображения недостаточно уменьшен ...

Это представление основано на 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 голосов
/ 05 апреля 2019

попробуй

<?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>
0 голосов
/ 16 января 2019

Пытались повторить дизайн в соответствии с вашими требованиями.

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

Надеюсь, это поможет.

...