IT干货网

android之设置提示时 EditText 不扩展

JeffreyZhao 2025年05月04日 编程设计 276 0

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。


去年关闭。







Improve this question




所以我有一个简单的EditTextConstraintLayout 内.我想要的是用户开始输入和 EditText扩展以适应他们的输入,这在我添加提示之前按预期工作。然后 View 似乎受限于提示的宽度,输入没有任何变化。

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 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="match_parent"> 
 
    <androidx.constraintlayout.widget.ConstraintLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 
 
        <androidx.appcompat.widget.Toolbar 
            android:id="@+id/add_menu_item_toolbar" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            app:layout_constraintTop_toTopOf="parent" 
            app:title="@string/add_menu_item_title" /> 
 
        <EditText 
            android:inputType="textCapWords" 
            android:id="@+id/add_menu_item_name" 
            style="@style/BlockListItem" 
            android:layout_width="0dp" 
            android:layout_height="wrap_content" 
            android:layout_marginStart="@dimen/margin" 
            android:layout_marginTop="@dimen/margin" 
            android:layout_marginEnd="@dimen/margin" 
            android:textColorHint="@android:color/darker_gray" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@id/add_menu_item_toolbar" /> 
 
        <View 
            android:id="@+id/add_menu_item_stock_frame" 
            android:layout_width="0dp" 
            android:layout_height="0dp" 
            android:layout_marginStart="@dimen/margin" 
            android:layout_marginTop="@dimen/margin" 
            android:layout_marginEnd="@dimen/margin" 
            android:background="@drawable/frame_border" 
            app:layout_constraintBottom_toBottomOf="@id/add_menu_item_frame_margin" 
            app:layout_constraintEnd_toEndOf="parent" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@id/add_menu_item_name" /> 
 
        <LinearLayout 
            android:id="@+id/add_menu_item_stock_container" 
            android:layout_width="0dp" 
            android:layout_height="wrap_content" 
            android:layout_marginTop="@dimen/margin" 
            android:orientation="vertical" 
            app:layout_constraintEnd_toEndOf="@id/add_menu_item_stock_frame" 
            app:layout_constraintStart_toStartOf="@id/add_menu_item_stock_frame" 
            app:layout_constraintTop_toTopOf="@id/add_menu_item_stock_frame" /> 
 
        <com.google.android.material.button.MaterialButton 
            android:id="@+id/add_menu_item_add_stock" 
            style="@style/Widget.MaterialComponents.Button.TextButton" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginTop="@dimen/margin" 
            android:layout_marginEnd="@dimen/margin" 
            android:text="@string/add_menu_item_add_stock" 
            app:icon="@drawable/baseline_add_24" 
            app:layout_constraintBottom_toBottomOf="@id/add_menu_item_stock_frame" 
            app:layout_constraintEnd_toEndOf="@id/add_menu_item_stock_frame" 
            app:layout_constraintTop_toBottomOf="@id/add_menu_item_stock_container" /> 
 
        <Space 
            android:id="@+id/add_menu_item_frame_margin" 
            android:layout_width="match_parent" 
            android:layout_height="@dimen/margin" 
            app:layout_constraintTop_toBottomOf="@id/add_menu_item_add_stock" /> 
 
        <com.google.android.material.textfield.TextInputLayout 
            android:id="@+id/add_menu_item_price_container" 
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginStart="@dimen/margin" 
            android:layout_marginTop="@dimen/margin" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@id/add_menu_item_stock_frame" 
            app:layout_goneMarginTop="@dimen/margin"> 
 
            <com.google.android.material.textfield.TextInputEditText 
                android:id="@+id/add_menu_item_price" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:ems="6" 
                android:hint="@string/menu_add_price_hint" 
                android:inputType="numberDecimal" /> 
        </com.google.android.material.textfield.TextInputLayout> 
 
        <TextView 
            android:id="@+id/add_menu_item_suggested_price" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginStart="@dimen/margin" 
            app:layout_constraintBottom_toBottomOf="@id/add_menu_item_price_container" 
            app:layout_constraintStart_toEndOf="@id/add_menu_item_price_container" 
            app:layout_constraintTop_toTopOf="@id/add_menu_item_price_container" /> 
 
        <com.google.android.material.button.MaterialButton 
            android:id="@+id/add_menu_item_add" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginEnd="@dimen/margin" 
            android:text="@string/menu_add_add" 
            app:layout_constraintBottom_toBottomOf="@id/add_menu_item_price_container" 
            app:layout_constraintEnd_toEndOf="parent" 
            app:layout_constraintTop_toTopOf="@id/add_menu_item_price_container" /> 
 
    </androidx.constraintlayout.widget.ConstraintLayout> 
 
</ScrollView> 

请您参考如下方法:

只要您的编辑文本中有字符串,您就可以简单地删除并重置提示:

add_menu_item_name.addTextChangedListener(object : TextWatcher { 
            val hintText = "myHint" 
            override fun afterTextChanged(s: Editable?) {} 
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} 
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { 
                add_menu_item_name.hint = 
                    if (count == 0) hintText 
                    else null 
            } 
        } 
) 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!