Stack Overflow на русском Asked on November 27, 2021
Всем привет, пытаюсь сделать следующее: есть navigation drawer сбоку, в нём есть FragmentContainerView. В этот контейнер помещается фрагмент, в котором также есть FragmentContainerView. Когда я во внутренний контейнер помещаю фрагмент, то на hdpi разрешении он залазит на другой элемент. Не знаю что делать в данной ситуации, везде старался использовать wrap_content, match_parent и 0dp.
на картинке кнопка "авторизация" залазит на картинку лого. Соотвественно, увеличу текст/межстрочный интервал – всё будет выглядеть ещё хуже (
Разметка фрагмента менюшки:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ImageView
android:id="@+id/iv_menu_drag_handle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_drag_handle_vertical" />
<TextView
android:id="@+id/textView"
style="@style/DriverDataBoldBottomSheetText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:drawableBottom="@drawable/ic_underlined_allrequests"
android:text="@string/label_all_requests"
android:textAllCaps="true"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/iv_menu_drag_handle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/requests_menu_content"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_menu_drag_handle"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
Разметка фрагмента, который помещается в requests_menu_content в менюшке
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:adjustViewBounds="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/picture_auth" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/menu_auth_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/imageView4"
app:layout_constraintTop_toBottomOf="@+id/imageView2"
app:layout_constraintVertical_bias="0.0" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:adjustViewBounds="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView2"
app:layout_constraintVertical_bias="1.0"
app:srcCompat="@drawable/logo_small_colored" />
</androidx.constraintlayout.widget.ConstraintLayout>
И, наконец, разметка фрагмента, который помещается в menu_auth_content в этом фрагменте в менюшке. (Как раз таки этот фрагмент и вылазит на иконку лого)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<Button
android:id="@+id/btn_start_auth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:text="@string/btn_auth"
android:textAllCaps="false"
android:theme="@style/RedButtonTheme"
app:layout_constraintEnd_toEndOf="@+id/tv_auth_text_label4"
app:layout_constraintStart_toStartOf="@+id/tv_auth_text_label4"
app:layout_constraintTop_toBottomOf="@+id/tv_auth_text_label4" />
<TextView
android:id="@+id/tv_auth_label_title4"
style="@style/DriverDataBoldBottomSheetText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/commit_auth"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_auth_text_label4"
style="@style/DriverDataBoldBottomSheetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:lineSpacingExtra="10sp"
android:text="@string/deny_requests_auth_reason"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_auth_label_title4" />
</androidx.constraintlayout.widget.ConstraintLayout>
Очень не хотелось бы прибегать к созданию вёрсток под другие экраны, т.к. по-сути это костыльный в какой-то степени подход, на мой взгляд, потому что если обраружится ещё для какого-то устройства, с другим разрешением – для него ещё одна вёрстка и так далее, число созданных макетов улетит в космос. Хотелось бы понять, как в данной ситуации с помощью 1-го макета можно было бы получить адаптивный интерфейс под все устройства. Очень надеюсь на Вашу помощь.
Ну есть два варианта:
это сделать размер элементов адаптивными, т.е. чтоб их размер зависел от размера экрана. Т.е. сделать чтоб все констрейнты были привязаны друг к другу. Но тут правда будет проблема с шрифтами.
обернуть макет Navigation в ScrollView. Тогда контент просто будет скроллиться
Answered by Sergei Buvaka on November 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP