Изменение размера ImageView динамически? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть ImageView, зажатый между двумя LinearLayout.ImageView имеет возможность масштабирования, которая позволяет мне увеличивать и уменьшать изображение - это означает, что изображение может увеличиваться до полного размера экрана (match_parent).

Если я загружаю очень высокое (высоту) изображение, оно перекрывает два LinearLayout, что НЕ нормально, когда прибывает на экран, но нормально, если пользователь решил увеличитьпотом.Есть ли способ «ограничить» высоту ImageView при инициализации, но также позволить ему увеличить весь размер экрана?

Ниже приведен пример неправильной загрузки «высокого» изображения, поскольку оно покрываетtop LinearLayout text:

enter image description here

И вот как я бы хотел, чтобы изображение загружалось с возможностью увеличения до размерапредыдущее изображение:

enter image description here

Это мой макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBgBlackTintDarker"
    android:orientation="vertical"
    android:paddingTop="20dp">

    <!-- Title at the top -->   
    <LinearLayout
        android:id="@+id/big_display_title_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="vertical">
        <!-- Title stuff here-->
    </LinearLayout>


    <!-- Middle custom ImageView with ability to zoom-->
    <com.sometimestwo.moxie.ZoomieView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/full_displayer_image_zoomie_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"/>  

    <!-- Bottom toolbar-->
    <LinearLayout
        android:id="@+id/big_display_snack_bar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/transparent"
        android:orientation="horizontal">

        <!-- Bottom toolbar stuff-->  

    </LinearLayout>

</RelativeLayout>

РЕДАКТИРОВАТЬ: Вот GIF, чтобы проиллюстрировать то, что я испытываю:

https://imgur.com/2Uqy4ZG

Изображение увеличивается и уменьшается по желанию, но мне нужно, чтобы при инициализации изображение помещалось между заголовком и нижней панелью инструментов, чтобы оно ничего не закрывало (пока пользовательрешает увеличить).

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете попробовать использовать ConstraintLayout.

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="16dp">

<LinearLayout
    android:id="@+id/big_display_title_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

    <!-- Title stuff here-->

</LinearLayout>


   <View
       android:layout_width="0dp"
       android:layout_height="0dp"         
       app:layout_constraintBottom_toTopOf="@+id/big_display_snack_bar_container"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@+id/big_display_title_container"/>

   <LinearLayout
            android:id="@+id/big_display_snack_bar_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
            android:background="@color/transparent"
        android:orientation="horizontal"
            app:layout_constraintBottom_toBottomOf="parent">

    </LinearLayout>    
</android.support.constraint.ConstraintLayout>
0 голосов
/ 27 сентября 2018

Вы должны поместить ImageView между двумя LinearLayout s в родительском RelativeLayout.Измените свой код, как показано ниже:

<!-- Middle custom ImageView with ability to zoom-->
<com.sometimestwo.moxie.ZoomieView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/full_displayer_image_zoomie_view"
    android:layout_below="@id/big_display_title_container"
    android:layout_above="@id/big_display_snack_bar_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"/> 
...