как изменить масштабируемость в XML-файле - PullRequest
0 голосов
/ 13 июня 2019

Это мое приложение с размерами экрана 5,0 и 4,0. Как я могу изменить шкалы одинаково везде.

5,0

enter image description here

4,0

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background"
    android:orientation="vertical">


    <TextView
        android:id="@+id/tv_sprawdz"
        android:layout_width="match_parent"
        android:layout_height="225dp"
        android:layout_marginTop="15dp"
        android:gravity="center_horizontal"
        android:text="Wybierz dzień"
        android:textAlignment="center"
        android:textColor="@color/White"
        android:textSize="18sp"
        android:textStyle="italic" />


    <LinearLayout

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:background="@drawable/bg_celen">

        <CalendarView

            android:id="@+id/calendarView"
            android:layout_width="350dp"
            android:layout_height="537dp">

        </CalendarView>
    </LinearLayout>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

UДля этого кода используйте Scalable sdp (масштабируемый дп) вместо dp в.Эта единица измерения размера зависит от размера экрана.Используйте эту библиотеку для вашего проекта.Для представлений текста используйте ssp, который основан на единице размера sp для текстов, также масштабируемой для любого размера экрана.Ниже описано, как реализовать это в предоставленном вами коде:

Добавьте эту библиотеку в свой блок зависимостей build.gradle:

dependencies {
  implementation 'com.intuit.sdp:sdp-android:1.0.6'
  implementation 'com.intuit.ssp:ssp-android:1.0.6'
}

Затем измените свой код следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background"
    android:orientation="vertical">


    <TextView
        android:id="@+id/tv_sprawdz"
        android:layout_width="match_parent"
        android:layout_height=""
        android:layout_marginTop="@dimen/_15sdp"
        android:gravity="center_horizontal"
        android:text="Wybierz dzień"
        android:textAlignment="center"
        android:textColor="@color/White"
        android:textSize="@dimen/_18ssp"
        android:textStyle="italic" />


    <LinearLayout

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/_15sdp"
        android:background="@drawable/bg_celen">

        <CalendarView

            android:id="@+id/calendarView"
            android:layout_width="@dimen/_350sdp"
            android:layout_height="@dimen/_537sdp">

        </CalendarView>
    </LinearLayout>
</LinearLayout>

Надеюсь, это поможет.

0 голосов
/ 13 июня 2019

Это общий вопрос.Пожалуйста, прочтите ниже, что я извлек из Документов для разработчиков Android

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

"wrap_content" говорит представлению установить его размер в соответствии с тем, что необходимо для размещения содержимого в этом представлении.

«match_parent» позволяет развернуть представление до максимально возможного уровня в родительском представлении.

Например:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/lorem_ipsum" />

Хотя фактический макет для этого представления зависит от других атрибутов в его родительском представлениии любые родственные представления, этот TextView намеревается установить его ширину, чтобы заполнить все доступное пространство (match_parent), и установить его высоту, точно равную количеству пространства, необходимому для длины текста (wrap_content).Это позволяет представлению адаптироваться к разным размерам экрана и разной длине текста.

И, более того, вы можете использовать разные макеты для разных размеров экрана, как описано ниже.

Вы можете предоставить макеты для конкретного экрана, создав дополнительные каталоги res / layout / directory (по одному для каждой конфигурации экрана, для которых требуется другой макет), а затем добавьте спецификатор конфигурации экрана к имени каталога компоновки (например, layout-w600dp для экранов с 600dp).доступной ширины).

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

 res/layout/main_activity.xml # For handsets (smaller than 600dp available Width) 
 res/layout-w600dp/main_activity.xml # For 7” tablets
 or any screen with 600dp # available width (possibly landscape handsets)
...