Нужно ли менять код xml для поддержки всех устройств с размером экрана android? - PullRequest
0 голосов
/ 08 марта 2020

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

мне нужно изменить код xml? или просто мне нужно изменить мой xml код?

пожалуйста, скажите мне, чтобы я мог решить мою проблему

xlm

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dp"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Login"
            android:textSize="40sp"
            android:layout_marginTop="40dp"
            android:fontFamily="sans-serif-black"
            android:layout_gravity="center"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nice"
            android:layout_marginTop="40dp"
            android:textSize="30sp"/>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayoutUsername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:errorEnabled="true"
            app:errorTextAppearance="@style/ErrorStyleNormal"
            android:padding="5dp"
            android:layout_marginTop="30dp"
            app:hintTextAppearance="@style/ErrorStyleNormal">
            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:hint="Username"
                />
        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayoutPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            app:errorEnabled="true"
            app:passwordToggleEnabled="true"
            app:errorTextAppearance="@style/ErrorStyleNormal"
            android:layout_marginTop="20dp"
            app:hintTextAppearance="@style/ErrorStyleNormal"
            app:counterTextAppearance="@style/CounterStyleNormal">
            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:textSize="25sp"
                android:inputType="textPassword"/>
        </com.google.android.material.textfield.TextInputLayout>

        <TextView
            android:id="@+id/textViewForgotPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_marginEnd="15dp"
            android:layout_marginRight="15dp"
            android:text="@string/ForgotPassword"
            android:textSize="15sp" />

        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            app:cardCornerRadius="25dp"
            android:elevation="5dp"
            android:padding="10dp"
            android:layout_marginTop="30dp">
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="5dp">
                <ImageView
                    android:id="@+id/image"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:src="@drawable/ic_arrow_forward"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/Login"
                    android:layout_toEndOf="@+id/image"
                    android:layout_centerVertical="true"
                    android:textSize="25sp"
                    android:layout_marginRight="10dp"
                    android:layout_marginEnd="10dp"
                    android:fontFamily="sans-serif-black"
                    android:layout_toRightOf="@+id/image" />
            </RelativeLayout>
        </androidx.cardview.widget.CardView>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="@string/To_Join_With"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"
            android:textColor="@android:color/black"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="@string/Click_here"
            android:layout_gravity="center"
            android:textColor="@android:color/holo_blue_bright"/>
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Я редактировал вас XML, так что это может быть хорошим началом для изучения, как использовать ConstraintLayout. Проверьте учебник для ConstraintLayout (constraintlayout.com)

  1. Не используйте match_parent с ConstraintLayout, у нас только 0dp (match_constraint) и wrap_conent
  2. Не путайте XML с ненужными вложенными ViewGroups (LinearLayout)
  3. При использовании полей или отступов лучше всего использовать числа, основанные на 8 (8 - 16 - 24 - 32 - ...)
  4. Использование кнопки CardView for неправильно, проверьте документы MaterialButton на material.io
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/Login"
            android:textSize="40sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView_loginMessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="32dp"
            android:text="@string/nice"
            android:textSize="32sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView" />

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayoutUsername"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:padding="5dp"
            app:errorEnabled="true"
            app:errorTextAppearance="@style/ErrorStyleNormal"
            app:hintTextAppearance="@style/ErrorStyleNormal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/textView_loginMessage">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:textSize="25sp" />

        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayoutPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:padding="5dp"
            app:counterTextAppearance="@style/CounterStyleNormal"
            app:errorEnabled="true"
            app:errorTextAppearance="@style/ErrorStyleNormal"
            app:hintTextAppearance="@style/ErrorStyleNormal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/textInputLayoutUsername"
            app:passwordToggleEnabled="true">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:inputType="textPassword"
                android:textSize="25sp" />
        </com.google.android.material.textfield.TextInputLayout>

        <TextView
            android:id="@+id/textViewForgotPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="16dp"
            android:text="@string/ForgotPassword"
            android:textSize="15sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textInputLayoutPassword" />

        <com.google.android.material.button.MaterialButton
            android:id="@+id/materialButton"
            style="@style/Widget.MaterialComponents.Button.TextButton.Icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="32dp"
            app:icon="@color/yourArrowIcon"
            app:iconGravity="start"
            android:text="yourText"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textViewForgotPassword" />

        <TextView
            android:id="@+id/textView_join"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="16dp"
            android:text="@string/To_Join_With"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/materialButton" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="16dp"
            android:text="@string/Click_here"
            android:textColor="@android:color/holo_blue_bright"
            android:textSize="20sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/textView_join" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.core.widget.NestedScrollView>
0 голосов
/ 08 марта 2020

Если вы хотите поддерживать разные размеры экрана, используйте https://developer.android.com/reference/android/support/annotation/Dimension для разных размеров элементов для разных экранов. Если вам нужна разная компоновка элементов на разных экранах, то вы можете создавать разные xml файлы для разных размеров экрана Android макеты для разных размеров экрана

...