无法处理所有屏幕尺寸的字体大小

时间:2017-09-13 02:59:33

标签: android android-layout font-size android-fonts

我正在构建一个适用于所有屏幕尺寸的Android应用程序,我使用sp作为文本大小但是在不同的Android屏幕上存在字体大小的问题。

附10英寸平板电脑的照片,谁能帮帮我?

截图:

screenshot

<?xml version="1.0" encoding="utf-8"?>
    <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">

//在这个TesxtView中我使用了sp而不是dp。

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/_6sdp"
        android:layout_marginEnd="@dimen/_6sdp"
        android:layout_marginLeft="@dimen/_6sdp"
        android:layout_marginRight="@dimen/_6sdp"
        android:layout_marginStart="@dimen/_6sdp"
        android:layout_marginTop="@dimen/_110sdp"
        android:text="Username"
        android:textAlignment="center"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="@+id/rectangle_login"
        app:layout_constraintLeft_toLeftOf="@+id/rectangle_login"
        app:layout_constraintRight_toRightOf="@+id/rectangle_login"
        app:layout_constraintStart_toStartOf="@+id/rectangle_login"
        app:layout_constraintTop_toTopOf="@+id/rectangle_login" />


</android.support.constraint.ConstraintLayout>

4 个答案:

答案 0 :(得分:3)

创建不同大小的文件夹并在该文件夹中创建dimen文件。 (根据屏幕尺寸)

values

values-small

values-normal

values-large

values-xlarge

答案 1 :(得分:1)

  

使用此库在sp中设置文本大小   https://github.com/intuit/ssp

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/action_cancel"
            android:textColor="@color/purple_light"
            android:textSize="@dimen/_12ssp"
            app:font="@{`hnc_roman`}"
            app:layout_constraintEnd_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:id="@+id/text_view_cancel"
            android:onClick="@{v -> viewModel.onCancelClick(v)}"
            tools:ignore="MissingConstraints" />

答案 2 :(得分:0)

对于不同的文字尺寸,请尝试使用

android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Small"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"

这里有小,中,大的选项。我相信这会给你更多的一致性,但这是一个非常广泛的话题。我会推荐你​​阅读文档。 有用的链接https://material.io/guidelines/style/typography.html

答案 3 :(得分:-1)

  1. 您必须在SP

  2. 中设置文字大小
  3. 将应用程序中的所有SP提取到dimen文件夹(只需按下alt +输入组合,将光标悬停在SP上)

  4. 为不同的屏幕尺寸创建不同的dimen文件夹。您可以手动执行或使用this plugin。诀窍在于下一个:你的sp将在dimen文件夹中。创建不同的屏幕文件夹插件我链接到自动生成所有维度的替代值