Проблема выравнивания макета Android - фотография не соответствует длине карты - PullRequest
0 голосов
/ 29 августа 2018

Я занимаюсь разработкой приложения для Android. У меня есть макет карты с фотографией на левой стороне и пользовательские данные на правой стороне.

Card layout working fine

Когда я меняю размер шрифта, длина карточки меняется; но фотография не настраивается автоматически, а нижняя граница фотографии не совпадает с нижней границей карты.

enter image description here

Редактировать: я не могу использовать height:match_parent (фотография занимает только половину длины карточки), потому что, я полагаю, textView справа заполняется только после этого.

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="8dp"
android:foreground="?selectableItemBackground">     

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/background"
    tools:translationX="0dp"
    tools:visibility="visible">

    <FrameLayout
        android:layout_marginRight="8dp"
        android:layout_marginEnd="8dp"
        android:layout_width="119dp"
        android:layout_height="153dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/dummy_profile_picture" />

        <TextView
            android:background="@drawable/bg_tag_success"
            android:singleLine="true"
            android:text="@string/approved"
            android:gravity="center_vertical"
            android:paddingLeft="8dp"
            android:paddingStart="8dp"
            android:paddingRight="20dp"
            android:paddingEnd="20dp"
            android:textColor="@color/white"
            android:layout_gravity="bottom|end"
            android:layout_margin="2dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:minHeight="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingRight="16dp"
        android:paddingTop="8dp">

        <TextView
            style="@style/TextAppearance.AppCompat.Caption"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="22 May 2018 10:12 AM "
            android:textAllCaps="true"
            android:singleLine="true"
            android:textSize="12sp" />

        <TextView
            style="@style/TextAppearance.AppCompat.Body2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:text="Allison (26)" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                style="@style/TextAppearance.AppCompat.Body1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:lines="1"
                android:text="Age: 26"
                android:textSize="13sp"
                android:visibility="gone" />

            <TextView
                style="@style/TextAppearance.AppCompat.Body1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:lines="1"
                android:text="B-Tech"
                android:textSize="13sp" />
        </LinearLayout>

        <TextView
            style="@style/TextAppearance.AppCompat.Body1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Software Engineer"
            android:textSize="13sp" />


    </LinearLayout>

    <View
        android:layout_width="4dp"
        android:background="@color/dark_goldenrod"
        android:layout_height="153dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"/>
    <View
        android:layout_width="4dp"
        android:background="@color/dark_goldenrod"
        android:layout_height="153dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"/>
</RelativeLayout> </android.support.v7.widget.CardView>

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="153dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp">

Это должно сработать, я думаю:)

EDIT

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            android:src="@mipmap/ic_launcher" />
0 голосов
/ 29 августа 2018

Вы установили ширину и высоту FrameLayout в фиксированные значения. Измените ширину и высоту FrameLayout на android: layout_height = "match_parent" и android: layout_width = "wrap_content".

...