EditText是Android应用程序中的标准文本输入窗口小部件。如果用户需要在应用程序中输入文本,这是他们执行此操作的主要方式。
如何将 EditText 输入限制为数字(可能是十进制和有符号)输入?
我已阅读 Android:将 EditText 限制为数字和如何在 android 中的 EditText 上显示数字键盘?。不幸的是,它们似乎都不符合我的需求。 我想限制我的 EditText
Android上出现键盘时如何防止EditText自动滚动?
即使我是否放置了滚动视图,当我的编辑文本请求焦点和键盘出现时,我的视图会自动滚动到顶部一点。它破坏了我的设计。我必须阻止这一切。 请问可以吗...
保存输入到 RecyclerView 的 EditText 中的值
我有一个 RecyclerView,其中每一行还有一个允许用户输入值的 EditText。 但是,当用户旋转屏幕时,这些值将重置为其默认空白值。 所以我想要...
Rtl 对AppCompatEditText Android 的drawableEnd 的支持
我像这样使用这个AppCompatEditText 我正在像这样使用这个AppCompatEditText <com.google.android.material.textfield.TextInputLayout android:id="@+id/tilCountry" style="@style/LoginTextInputLayoutStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dpSixteen" android:layout_marginEnd="@dimen/dpSixteen" android:layout_marginBottom="@dimen/dpTwenty" android:background="@null" android:hint="@string/chooseCountry" app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout" app:hintTextColor="@color/moonRaker"> <androidx.appcompat.widget.AppCompatEditText android:id="@+id/etCountry" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableEnd="@drawable/ic_blue_right" android:drawableTint="@color/blue" android:focusable="true" android:imeOptions="actionNext" android:textAppearance="@style/SignupEditText" tools:targetApi="m" /> </com.google.android.material.textfield.TextInputLayout> 当用户将语言更改为阿拉伯语时,rtl 看起来一切都很好,但是 drawableEnd 不从右到左改变。 选择带有镜像效果的阿拉伯语时,箭头必须切换到左侧。 我的可绘制代码 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="7.41dp" android:height="12dp" android:viewportWidth="7.41" android:viewportHeight="12" **android:autoMirrored="true"**> <path android:pathData="M0,10.58 L4.58,6 0,1.41 1.41,0l6,6 -6,6Z" android:fillColor="#1b47db"/> </vector> 这里出了什么问题? 如果语言是阿拉伯语,则Drawable应从头开始设置,否则应从末尾开始设置。 etCountry.setCompoundDrawablesWithIntrinsicBounds(0, 0, @drawable/ic_blue_right, 0); //Right side drawable etCountry.setCompoundDrawablesWithIntrinsicBounds(@drawable/ic_blue_right, 0, 0, 0); //Left side drawable 试试这个方法
我正在做一个有两个 EditText 的应用程序。我想做的是,如果您单击其中一个并在其上书写,则另一个必须擦除它所具有的任何内容,并且只显示提示字符串。我正在尝试用...
我的应用程序有密码editText。 当我输入密码时,软键盘将它们保存为新单词。 我怎样才能阻止这种情况发生?
我阅读了其他几篇文章并使用 input.setInputType(TYPE_NUMBER_FLAG_DECIMAL);确实打开了键盘,但不是数字键盘 这有什么技巧吗?
我的EditText中提示的长度比ET视图的宽度长一点。那么我如何为 ET 视图设置 marquee 属性。我尝试过设置它,但应用程序崩溃并给出错误:E/AndroidRu...
如果 if else 语句成功,我正在尝试更改 EditText 边框。我有 4 个类似的 EditText。然而其中一个,第二个的行为有点奇怪,它的大小会在
我的片段中有两个 EditText。它们都将 android:inputType 设置为 numberSigned|numberDecimal,因为我希望通过它们仅输入十进制数字,这些数字也可能被签名。 该...
android edittext添加方形边框如何使其成为方形?
我想在android xml中创建带有方形边框的edittext 这是我的编辑文本和添加到其中的可绘制对象 我想在 android xml 中创建带有方形边框的编辑文本 这是我的编辑文本和添加到其中的可绘制对象 <EditText android:layout_width="wrap_content" android:id="@+id/codeFirst" android:padding="@dimen/appbar_padding" android:layout_height="wrap_content" android:background="@drawable/edittext_border" android:lines="2"/> 这是可绘制的 <?xml version="1.0" encoding="UTF-8" ?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffff" /> <stroke android:width="2dp" android:color="@color/colorsubtext" /> <padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" /> </shape> 编辑文本看起来像旋转的矩形,我需要将其变成正方形,所有边框边都相等 如果您想要 edittext 上有方形边框,则必须指定 width 和 height,而不是使用 wrap_content。 android:layout_width="100dp" android:layout_height="100dp" 也许自定义 EditText 可以在下面帮助您; package com.example.your.views import android.content.Context import android.util.AttributeSet import android.widget.EditText class AspectRatioEditText @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = android.R.attr.editTextStyle ) : EditText(context, attrs, defStyleAttr) { private var aspectRatio: Float = 1f // Default aspect ratio fun setAspectRatio(ratio: Float) { aspectRatio = ratio requestLayout() } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) val width = measuredWidth val height = (width / aspectRatio).toInt() setMeasuredDimension(width, height) } } 在 XML 中; <!-- 50 x 50 EditText --> <com.example.your.views.AspectRatioEditText android:id="@+id/aspectRatioEditText" android:layout_width="50dp" android:layout_height="wrap_content" android:imeOptions="actionNext" android:importantForAutofill="no" android:inputType="text" android:maxLines="1" android:padding="14dp" android:textAllCaps="true" android:textColor="@color/black" android:textSize="18sp" tools:ignore="LabelFor" /> 或者在kotlin中自定义比例; val aspectRatioEditText = findViewById<AspectRatioEditText>(R.id.aspectRatioEditText) aspectRatioEditText.setAspectRatio(1f) 你可以关注这个 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2dp" android:color="@color/color_primary" /> <corners android:radius="0dp" /> </shape>
我需要一个具有垂直和水平滚动且固定大小的EditText,我使用了ScrollView和HorizontalScrollView,但是EditText没有填充上面的View,只留下一个小方块......
所以,我使用 TextInputLayout 和 EditText 来输入电子邮件,但我在提示放置方面遇到了一些问题。我也不知道如何改变这个“I”符号的颜色。这是我的 XML ...
我正在尝试使EditText的指针颜色变成蓝色。 我可以使下划线和光标变成蓝色,但看起来像水滴的指针仍然是灰色的。 我用谷歌搜索了一下,但是......
我想这一定很简单,但是如何在 EditText 中插入负数? 我正在 Mac 上运行模拟器。 谢谢。
如何使用 Kotlin 在 Android XML 中通过一次切换来切换两个密码字段的可见性?
我有两个密码字段,一个是密码,另一个是确认密码。我想在密码字段 EditText 中仅使用一个切换,使用 TextInputLayout 的属性 passwordToggleEnabled="true&qu...
我正在尝试用逗号和点实现文本观察器,但我找不到解决方案。这是我想要做的,如果用户输入 10000,我需要在我的编辑文本中将其显示为 10.000,如果用户...
我想将自定义可绘制对象设置为 EditText 的光标。 对于 API < Android Q I'm using reflection and it works like intended. Starting from Android Q we have convenient method setTextCursorDrawable(@
如何检查在动态创建的edittext中调用了哪个edittext文本观察器侦听器
我可以为动态创建的Edittext添加Textwatcher监听器,所以基本上我会检查第一个edittext ontextchanged是否有任何值创建另一个edittext等等。如何检查...
将 EditText imeOptions 设置为 actionNext 在使用数字时没有效果
这是我的编辑文本:- 这是我的编辑文本:- <com.os.fastlap.util.customclass.EditTextPlayRegular android:id="@+id/full_name_et" style="@style/Edittext_white_13sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/_5sdp" android:background="#00ffffff" android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" android:imeOptions="actionNext" android:inputType="text" android:maxLength="20" android:maxLines="1" android:nextFocusDown="@+id/last_name_et" android:textCursorDrawable="@null" /> 当我在编辑文本中删除 digit 时,它工作正常,但使用 digit imeOptions 则不起作用。但令人惊讶的是,如果我使用 singleLine 而不是 maxLines ,它就可以正常工作。但 singleLine 现在已被弃用。 我无法删除编辑文本中的数字,并且我不想使用已弃用的方法。任何人都可以解决这个问题。提前致谢 这是使用软件键盘按钮“下一步”的简化解决方案: final String NOT_ALLOWED_CHARS = "[^a-zA-Z0-9]+"; final EditText editText = (EditText) findViewById(R.id.editText); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { if (!TextUtils.isEmpty(s)) { // remove the listener to avoid StackoverflowException editText.removeTextChangedListener(this); // replace not allowed characters with empty strings editText.setText(s.toString().replaceAll(NOT_ALLOWED_CHARS, "")); // setting selection moves the cursor at the end of string editText.setSelection(editText.getText().length()); // add the listener to keep watching editText.addTextChangedListener(this); } } }); 这里正则表达式 [^a-zA-Z0-9]+ 对应于相关 android:digits 的 EditText 的允许值。 你可以使用 android:lines="1" 代替 android:maxLines 或 android:singleLine="true". 我知道你已经尝试了很多解决方案,请尝试使用 android:lines="1" 如果您之前没有尝试过,请尝试这些。 问题是您单击 Enter 键而不是所需的 actionNext 以便将光标移动到下一个 EditText 指定输入法操作 大多数软输入法在底部提供用户操作按钮 适合当前文本字段的角。默认情况下, 系统使用此按钮执行“下一步”或“完成”操作,除非您 文本字段允许多行文本(例如 android:inputType="textMultiLine"),在这种情况下操作按钮是 回车。但是,您可以指定其他操作 可能更适合您的文本字段,例如“发送”或“前往”。 它会导致您的操作按钮回车。所以这意味着不会触发android:nextFocusDown 首先,让我们看看已弃用的 singleLine 和 maxLines 之间有什么区别 单线 当您设置android:singleLine="true"时,一行文本在EditText中可见,但Enter键在键盘中不可见 最大行数 当您使用特定值设置 android:maxLines 属性时,只有相同数量的行文本在 EditText 中可见,并且键盘中的输入键对于 Entering 也可见。 因此,当您单击操作按钮时,它会根据您的代码触发 Enter Action。另外,如果您使用 android:inputType="textMultiLine" 属性,则必须使用 android:maxLines 更改 inputType 属性 最大行数 在 API 级别 1 中添加 int maxLines 使 TextView 最多为这个 许多行高。当用于可编辑文本时, inputType 属性的值必须与 textMultiLine 标志结合使用 要应用的 maxLines 属性。 可以是整数值,例如“100”。 当我使用正确的属性自定义您的代码时,它仍然触发 Enter 键而不是您想要的 IME_ACTION_NEXT 。我认为这没有解决问题,因为 textMultiLine 可以与文本及其变体组合以允许 字段中的多行文本。如果未设置此标志,则文本 字段将被限制为一行。对应于 TYPE_TEXT_FLAG_MULTI_LINE。 TYPE_TEXT_FLAG_MULTI_LINE 在 API 级别 3 中添加了 int TYPE_TEXT_FLAG_MULTI_LINE 标志 TYPE_CLASS_TEXT:可以在字段中输入多行文本。 如果未设置此标志,则文本字段将被限制为 单线。 IME 也可能选择在以下情况下不显示回车键: 未设置此标志,因为不需要创建新行。 常量值:131072 (0x00020000) 解决方案: 子类化 EditText 并调整 IME 选项。之后,您不需要 android:maxLines 或 android:singleLine 属性。 @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection connection = super.onCreateInputConnection(outAttrs); int imeActions = outAttrs.imeOptions&EditorInfo.IME_MASK_ACTION; if ((imeActions&EditorInfo.IME_ACTION_NEXT) != 0) { // clear the existing action outAttrs.imeOptions ^= imeActions; // set the DONE action outAttrs.imeOptions |= EditorInfo.IME_ACTION_NEXT; } if ((outAttrs.imeOptions&EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) { outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; } return connection; } 您还可以查看另一篇文章这里。我根据您的目的重新配置了这篇文章接受的答案 android:digits 指定 EditText 有数字输入方法,根据 docs 您可以使用 android:inputType="personName" 来实现与当前 digits attr 相同的效果 android:maxLines 只是让 TextView 最多这么多行高,不阻止用户输入更多字符。 与 android:lines 相同,只会使 TextView 恰好这么多行高。 您的解决方案的解决方法代码如下, XML 文件 <EditText android:id="@+id/full_name_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5sp" android:background="#00ffffff" android:imeOptions="actionNext" android:inputType="text" android:maxLines="1" android:maxLength="20" android:textCursorDrawable="@null" /> Java: final EditText edtfirstName = (EditText) findViewById(R.id.full_name_et); edtfirstName.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence charSequence, int start, int before, int count) { if (charSequence.toString().startsWith(" ")) { String result = charSequence.toString().replace(" ", "").replaceAll("[^a-zA-Z]+", ""); if (!charSequence.toString().equals(result)) { edtfirstName.setText(result); edtfirstName.setSelection(result.length()); } } else { String result = charSequence.toString().replaceAll("[^a-zA-Z ]+", ""); if (!charSequence.toString().equals(result)) { edtfirstName.setText(result); edtfirstName.setSelection(result.length()); } } } @Override public void afterTextChanged(Editable s) { } });