Масштабирование ImageView в зависимости от размера CardView не рисуется - PullRequest
0 голосов
/ 07 июля 2019

Проблема У меня есть ImageView, который содержит фон круга и нарисованный значок внутри круга.Размер ImageView зависит от размера рисуемого объекта (высота = wrap_content, ширина = wrap_content).Drawable имеет фиксированную высоту и ширину.

Это означает, что когда я меняю размер экрана, ImageView не масштабируется должным образом, поскольку он всегда основывает свой размер на фиксированном размере рисования.

ImageView обернут внутри LinearLayout.Я попытался изменить значения отступов влево и вправо, но это просто приводит к изменению формы нежелательными способами.

XML моей деятельности:

<android.support.v7.widget.CardView
    android:id="@+id/create_invoice_cardview"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="@dimen/button_gap_normal"
    android:layout_marginTop="185dp"
    android:layout_marginEnd="@dimen/margin_width_normal"
    android:layout_marginBottom="@dimen/button_gap_normal"
    app:layout_constraintBottom_toTopOf="@+id/add_single_cardview"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/capture_receipt_cardview"
    app:layout_constraintTop_toTopOf="parent">

    <LinearLayout 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="match_parent"
        android:orientation="vertical"
        android:paddingTop="15dp"
        tools:context=".HomePageActivity">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/circle_background_green"
            android:padding="10dp"
            android:src="@drawable/ic_photo_camera_black_24dp" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:autoSizeMaxTextSize="17sp"
            android:autoSizeTextType="uniform"
            android:paddingRight="5dp"
            android:paddingLeft="5dp"
            android:paddingTop="7dp"
            android:textStyle="bold"
            android:gravity="center_horizontal"
            android:text="Create Invoice" />

    </LinearLayout>

</android.support.v7.widget.CardView>

XML для ic_photo_camera_black_24dp:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="50dp"
    android:height="50dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
<path
    android:fillColor="#FFF"
    android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0"/>
<path
    android:fillColor="#FFF"
    android:pathData="M9,2L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2L9,2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"/>

XML для circle_background_green:

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="oval" 
xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/complimentGreen" />
</shape>

Мне бы хотелось, чтобы круг изначок внутри, чтобы масштабировать в соответствии с размером экрана телефона или, технически, высотой и шириной CardView.Тем не менее, он всегда остается одного размера, который основан на фиксированном значении высоты и ширины нарисованной камеры ic_photo.

...