2016-10-11 4 views
0

я построил фрагмент (с ConstraintLayout), который выглядит следующим образом: Fragment image Я хотел бы использовать его, например, загрузить его (добавить в fragmentManager) для «владельца фрагмента» это деятельность, но если этот держатель слишком мал, изображения будут покрывать друг друга. Посмотрите: Image problem Таким образом, изображения не будут меняться. ... Есть ли решение для автоматического изменения размера?Растяжение ConstraintLayout и его содержание

Спасибо, Золтан

ответ

0

Место каждого из ваших ImageViews в своих собственных ConstraintLayout. layout_width и layout_heightImageViews должны быть wrap_content. layout_width и layout_height их родителей ConstraintViews должны быть match_parent и wrap_content соответственно.

Якорь слева ConstraintView к верху и начать родителя, а правый ConstraintView к вершине и в конце с помощью layout_constraintTop_toTopOf, layout_constraintStart_toStartOf и layout_constraintEnd_toEndOf.

Также добавьте поля к родительскому ConstraintViews, используя layout_marginTop и layout_marginLeft для левой стороны; layout_marginTop и layout_marginRight справа.

Затем создайте verticalGuideline в качестве дочернего элемента вашего фрагмента. Установите его layout_constraintGuide_percent на номер 0.5. Дайте ему id@+id/guideline.

Установите левый ConstraintView'slayout_constraintRight_toLeftOf в @+id/guideline и право ConstraintView'slayout_constraintLeft_toRightOf на @+id/guideline, а также.

Это должно масштабировать размеры ImageViews, если фрагмент не такой широкий.

Если вы хотите там быть минимальный зазор между двумя изображениями, вы можете добавить layout_marginRight к левому ConstraintView и layout_marginLeft справа ConstraintView. Установка каждого из 2dp даст минимальный пробел в 4dp.

Вот пример файла макета. Редактировать контейнер ConstraintLayout'slayout_width, чтобы увидеть его в действии:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
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:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="100dp" 
    android:layout_height="300dp" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    android:background="#333333"> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guideline" 
     app:layout_constraintGuide_percent="0.5" 
     android:orientation="vertical"/> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     android:layout_marginTop="16dp" 
     android:layout_marginLeft="16dp" 
     app:layout_constraintRight_toLeftOf="@+id/guideline" 
     android:layout_marginRight="2dp" 
     android:background="#FF0000"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:srcCompat="@mipmap/ic_launcher" 
      tools:layout_editor_absoluteY="0dp" 
      tools:layout_editor_absoluteX="0dp"/> 
    </android.support.constraint.ConstraintLayout> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     android:layout_marginTop="16dp" 
     android:layout_marginRight="16dp" 
     app:layout_constraintLeft_toRightOf="@+id/guideline" 
     android:layout_marginLeft="2dp" 
     android:background="#00FF00"> 


     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:srcCompat="@mipmap/ic_launcher" 
      tools:layout_editor_absoluteY="0dp" 
      tools:layout_editor_absoluteX="0dp"/> 
    </android.support.constraint.ConstraintLayout> 
</android.support.constraint.ConstraintLayout> 

Enough Room Not Enough Room

+0

Хороший подход! Я попытался упростить свою реальную проблему, поэтому сказал, что у меня есть два изображения, но у меня четыре ... В одной строке и у меня 4 строки ... У меня 16 изображений. :) – Zoltan

+0

(внезапно Ввод отправил мой комментарий ...) Итак, ваше решение выглядит великолепно, но я не мог использовать для решения моей реальной проблемы ... :( Даже, у меня возникла странная проблема с Android Studio: В текстовый режим Я пишу 'match_parent' к моему изображению, затем я нажимаю на Design, а затем обратно в Text и Studio заменяю его на значение fix!: O Почему? – Zoltan