如何动态调整不同屏幕尺寸的文本大小和边距?

时间:2019-02-01 04:32:30

标签: android android-layout

我正在使用ConstraintLayout开发一个Android应用。它可以在不同的屏幕尺寸上正常显示,但是,我希望textviews的大小和元素之间的间距增加,以利用较大屏幕手机上的较大屏幕空间。

我已经读到可以为不同的密度或大小(xxhdpi,xhdpi)创建不同的XML布局,但是我认为ConstraintLayout相对于相对布局的主要优势之一是它可以调整间距/大小自动。您可以使用约束布局来做到这一点,还是需要为每个屏幕尺寸/密度创建单独的xml布局?谢谢!

<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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:layout_editor_absoluteY="81dp">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="19dp"
        android:backgroundTint="@color/colorAccent"
        app:layout_constraintBottom_toTopOf="@+id/inView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/lbsView"
        app:layout_constraintTop_toTopOf="parent" />


    <TextView
        android:id="@+id/weightView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="27dp"
        android:layout_marginTop="21dp"
        android:layout_marginEnd="14dp"
        android:text="Weight:"
        android:textSize="26sp"
        app:layout_constraintEnd_toStartOf="@+id/weight"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

这是我的约束布局的示例。

3 个答案:

答案 0 :(得分:0)

将边距值放在dimens.xml中,您可以在其中调整不同屏幕尺寸的大小,例如values-hdpi,values-xhdpi` ..

values-hdpi/dimens.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
  <dimen name="spinner_margin_top">16dp</dimen>
</resources>

values-xhdpi/dimens.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
  <dimen name="spinner_margin_top">20dp</dimen>
</resources>

在您的xml文件中:

<Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spinner_margin_top"
        .... />

答案 1 :(得分:0)

您可以使用[-smallestWidth]值来为tex设置不同的大小。

SW:屏幕的基本尺寸,由可用屏幕区域的最短尺寸表示。具体来说,设备的MinimumWidth是屏幕可用高度和宽度中的最短宽度(您也可以将其视为屏幕的“最小可能宽度”)。您可以使用此限定符来确保,不管屏幕当前的方向如何,您的应用程序的UI至少具有dps宽度可用。

示例: 让我们考虑一下3种不同的布局:小,中,大

values       : <dimen name="text_size">10sp</dimen>
values-sw375 : <dimen name="text_size">11sp</dimen>
values-sw600 : <dimen name="text_size">18sp</dimen>

enter image description here

答案 2 :(得分:0)

如@Farid所说..您可以为2种不同尺寸的设备使用减光片。

question还可帮助您理解变暗。

如果您不想声明每种尺寸的变暗度,则可以使用此库sdpssp