You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中TextInputLayout提示位置异常,如何调整至圆角框内?

问题:TextInputEditText的Hint无法移入自定义圆角区域

我尝试调整TextInputLayout/TextInputEditText中的hint位置,使其移入自定义的圆角形状区域内,但无法成功。

现有布局代码

<?xml version="1.0" encoding="utf-8"?>

<!--
    module : app
    folder : layout
-->

<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawer_layout_activity_setting"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="it.numera.pagopaliteapp.activity.SettingActivity"
    android:background="@color/colorLayoutPagoBperBackgroundGenerale"
    >

    <!-- inizio sezione principale -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorLayoutPagoBperBackgroundGenerale"
    >

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar_activity_setting"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@drawable/rettangolo_smussato"
            android:elevation="4dp"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleTextColor="@color/colorLayoutPagoBperBackgroundGenerale"
            >
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginTop="6dp"
                android:layout_marginRight="6dp"
                android:gravity="right"
                app:srcCompat="@drawable/logo_pagppa_55x35" />

        </androidx.appcompat.widget.Toolbar>


        <LinearLayout
            android:id="@+id/activity_setting_layout_email_default"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar_activity_setting"
            android:layout_alignParentStart="true"
            android:layout_marginRight="2dp"
            android:layout_marginTop="@dimen/layoutpagobper_margin_from_toolbar"
            android:orientation="vertical">
            <TextView
                android:id="@+id/activity_setting_label_email_default"
                android:layout_width="@dimen/layoutpagobper_edittext_width"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="35dp"
                android:fontFamily="@font/sf_ui_display_bold"
                android:text="@string/activity_setting_label_email_notifica_default"
                android:textColor="#005157"
                android:textSize="@dimen/layoutpagobper_font_size_testi_label_default"
                android:textStyle="bold" />

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="10dp"
                >

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/activity_setting_edittext_email_default"
                    android:layout_width="@dimen/layoutpagobper_edittext_width"
                    android:layout_height="53dp"
                    android:paddingLeft="12dp"
                    android:paddingTop="3dp"
                    android:fontFamily="@font/sf_ui_display_regular"
                    android:textColor="#005157"
                    android:textColorHint="#58979A"
                    android:background="@drawable/layoutpagobper_rettangolo_edittext_no_icon"
                    android:hint="@string/edittext_email_hint15" />

            </com.google.android.material.textfield.TextInputLayout>

            <TextView
                android:id="@+id/activity_setting_label_info_email_default"
                android:layout_width="@dimen/layoutpagobper_edittext_width"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="14dp"
                android:fontFamily="@font/sf_ui_display_regular"
                android:text="Puoi modificare la tua email o cliccare il Conferma ed andare avanti"
                android:textColor="#005157"
                android:textSize="14dp"
                android:textStyle="normal" />
        </LinearLayout>


        <LinearLayout
            android:id="@+id/activity_setting_layout_image_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/layoutpagobper_margin_left"
            android:layout_marginRight="@dimen/layoutpagobper_margin_right"
            android:orientation="vertical"
            android:gravity="bottom|center_horizontal"
            android:layout_below="@+id/activity_setting_layout_email_default"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="@dimen/layoutpagobper_margin_from_bottom_screen"
            android:layout_alignParentBottom="true"
            >

            <Button
                android:id="@+id/activity_setting_imageButton_conferma"
                style="@style/OrangeButtonBperStyle"
                android:background="@drawable/layoutpagobper_rettangolo_background_imagebutton_orange"
                android:fontFamily="@font/sf_ui_display_semibold"
                android:textSize="18sp"
                android:layout_marginTop="10dp"
                />

            <Button
                android:id="@+id/activity_setting_imageButton_back"
                style="@style/BlueButtonLinkBperStyle"
                android:background="@color/colorLayoutPagoBperButtonLabel"
                android:fontFamily="@font/sf_ui_display_semibold"
                android:text="Homepage"
                android:textSize="18sp"
                />

        </LinearLayout>


    </RelativeLayout>
    <!-- inizio sezione navigation drawer -->
    <include
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        layout="@layout/navigation_drawer_layout"
        />

</androidx.drawerlayout.widget.DrawerLayout>

自定义圆角Shape代码

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle">
            <corners
                android:bottomLeftRadius="7dp"
                android:bottomRightRadius="7dp"
                android:radius="0.8dp"
                android:topLeftRadius="7dp"
                android:topRightRadius="7dp" />
            <solid android:color="#ffffff" />
            <stroke android:width="2dp" android:color="#58979A"/>
        </shape>
    </item>

</layer-list>

解决方法

核心问题是TextInputLayout作为Material组件的容器,默认负责Hint的绘制与布局,直接给内部的TextInputEditText设置背景会导致Hint位置与背景区域错位。按以下步骤修改:

  1. 将android:hint从TextInputEditText移到TextInputLayout中,让容器统一管理Hint的位置。
  2. 移除TextInputEditText的android:background,改为给TextInputLayout设置自定义圆角背景。
  3. 给TextInputLayout添加app:boxBackgroundMode="none",禁用Material组件默认的输入框背景样式。
  4. 调整TextInputLayout的内边距,让Hint和输入内容都能完全落在圆角区域内。

修改后的TextInputLayout相关代码:

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="@dimen/layoutpagobper_edittext_width"
    android:layout_height="wrap_content"
    android:layout_marginLeft="25dp"
    android:layout_marginTop="10dp"
    android:background="@drawable/layoutpagobper_rettangolo_edittext_no_icon"
    android:paddingLeft="12dp"
    android:paddingTop="12dp"
    android:paddingBottom="12dp"
    app:boxBackgroundMode="none"
    android:hint="@string/edittext_email_hint15">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/activity_setting_edittext_email_default"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/sf_ui_display_regular"
        android:textColor="#005157"
        android:textColorHint="#58979A"
        android:background="@null"/>

</com.google.android.material.textfield.TextInputLayout>

这样修改后,Hint会跟随TextInputLayout的内边距定位,完全落在自定义的圆角背景区域内,同时输入内容也能正确对齐。

内容的提问来源于stack exchange,提问作者GundamRX91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:57:00