修复Kotlin Android应用中EditText触摸目标尺寸问题

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

问题:

用Kotlin开发Android应用,second_layout.xml布局文件如下:

<?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/secondLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible" tools:context=".SecondActivity" tools:visibility="visible">

<Button
    android:id="@+id/button2"
    android:layout_width="245dp"
    android:layout_height="65dp"
    android:layout_marginBottom="144dp"
    android:text="第2:隐式打开Act3"
    android:visibility="visible"
    app:layout_constraintBottom_toTopOf="@+id/button2b"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    tools:visibility="visible" />

<Button
    android:id="@+id/button2b"
    android:layout_width="245dp"
    android:layout_height="65dp"
    android:layout_marginBottom="208dp"
    android:text="第2:返回传值给Act1"
    android:visibility="visible"
    app:layout_constraintBottom_toTopOf="@+id/editText"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    tools:visibility="visible" />

<EditText
    android:id="@+id/editText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginEnd="24dp"
    android:layout_marginBottom="1dp"
    android:hint="请输入数据"
    android:visibility="visible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/titleLayout"
    tools:visibility="visible" />

<com.example.activitytest.TitleLayout
    android:id="@+id/titleLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="39dp"
    android:layout_marginTop="31dp"
    android:layout_marginEnd="39dp"
    android:layout_marginBottom="600dp"
    app:layout_constraintBottom_toTopOf="@+id/editText"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.21" />

</androidx.constraintlayout.widget.ConstraintLayout>

报错:editText <EditText>: Touch target size too small,请修复。

答案:

这个错误是因为 EditText 的触摸目标尺寸太小,通常是因为它的高度或宽度太小,导致用户难以点击。根据 Android 的设计规范,触摸目标的最小尺寸应该是 48dp x 48dp。

在你的布局文件中,EditText 的高度是 wrap_content,这可能导致它的高度小于 48dp。你可以通过设置最小高度来解决这个问题。

你可以在 EditText 中添加 android:minHeight="48dp" 来确保它的高度至少是 48dp。

修改后的 EditText 代码如下:

<EditText
    android:id="@+id/editText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginEnd="24dp"
    android:layout_marginBottom="1dp"
    android:hint="请输入数据"
    android:visibility="visible"
    android:minHeight="48dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/titleLayout"
    tools:visibility="visible" />

这样可以确保 EditText 的触摸目标尺寸符合规范,避免报错。