修复Android布局中TextView触摸目标尺寸过小问题

使用 GPT-4o 回答,作者 GPT4oMini.app

问题:

开发Android应用,使用Kotlin编程。layout文件如下:

<?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" android:layout_width="match_parent" android:layout_height="wrap_content">

<Button
    android:id="@+id/titleBack"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Back"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<TextView
    android:id="@+id/titleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:foreground="@color/teal_700"
    android:text="Title Text"
    android:inputType="text"
    android:textColor="#fff"
    android:textSize="24sp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toEndOf="@+id/titleBack"
    app:layout_constraintEnd_toStartOf="@+id/titleEdit" />

<Button
    android:id="@+id/titleEdit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Edit"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

报错:titleText <TextView>: Touch target size too small 请问错误原因,如何修复?

答案:

这个错误是因为 TextView 的触摸目标尺寸太小。根据 Android 的设计规范,触摸目标的最小尺寸应该是 48dp x 48dp,以确保用户能够轻松点击。

在你的布局文件中,TextView 的高度和宽度都是 wrap_content,这可能导致其实际尺寸小于 48dp x 48dp。你可以通过设置 minWidthminHeight 属性来确保 TextView 的最小尺寸符合要求。

以下是修改后的布局文件:

<?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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/titleBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Back"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/titleText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:foreground="@color/teal_700"
        android:text="Title Text"
        android:inputType="text"
        android:textColor="#fff"
        android:textSize="24sp"
        android:minWidth="48dp"
        android:minHeight="48dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@+id/titleBack"
        app:layout_constraintEnd_toStartOf="@+id/titleEdit" />

    <Button
        android:id="@+id/titleEdit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Edit"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

通过设置 android:minWidthandroid:minHeight 属性,确保 TextView 的最小尺寸为 48dp x 48dp,这样就可以避免触摸目标尺寸过小的问题。