Как заставить представления выделять одинаковый процент экрана всегда? - PullRequest
0 голосов
/ 28 февраля 2019

Что ж, я много искал, но не смог найти, как сделать так, чтобы в моих представлениях всегда был одинаковый процент от выделенного им экрана.Может быть, я использую неправильные ключевые слова для поиска.

В любом случае, у меня есть 3 изображения.Я хочу убедиться, что они всегда соответствуют экрану.Все они в настоящее время имеют высоту 200dp и ширину 200dp.

На более широких экранах они выглядят так:

enter image description here

Однако на меньших экранах они отображаются так:

enter image description here

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

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Для адаптивного дизайна попробуйте использовать ConstraintLayout здесь и использовать блок sdp для размера здесь

0 голосов
/ 28 февраля 2019

Вы также можете добиться этого, используя ConstraintLayout со свойством layout_constraintDimensionRatio, как показано ниже: Примечание: я не тестировал приведенный ниже код, но он должен работать нормально.

<android.support.constraint.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <ImageView
        android:id="@+id/first_image"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="second_image"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
    <ImageView
        android:id="@+id/second_image"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="third_image"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="first_image"/>
    <ImageView
        android:id="@+id/third_image"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="second_image"/>
</android.support.constraint.ConstraintLayout>
0 голосов
/ 28 февраля 2019

Вы можете достичь этого с вертикальной LinearLayout с layout_weihth на дочерних видах.

<?xml version="1.0" encoding="utf-8"?>
<layout 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">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/first_image"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
        <ImageView
            android:id="@+id/second_image"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
        <ImageView
            android:id="@+id/third_image"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    </LinearLayout>


</layout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...