android-edittext 相关问题

EditText是Android应用程序中的标准文本输入窗口小部件。如果用户需要在应用程序中输入文本,这是他们执行此操作的主要方式。

如何在kotlin中使用点和逗号分隔数字

我正在尝试用逗号和点实现文本观察器,但我找不到解决方案。这是我想要做的,如果用户输入 10000,我需要在我的编辑文本中将其显示为 10.000,如果用户...

回答 1 投票 0

API Q+ 上忽略 EditText 的自定义光标可绘制

我想将自定义可绘制对象设置为 EditText 的光标。 对于 API < Android Q I'm using reflection and it works like intended. Starting from Android Q we have convenient method setTextCursorDrawable(@

回答 3 投票 0

如何检查在动态创建的edittext中调用了哪个edittext文本观察器侦听器

我可以为动态创建的Edittext添加Textwatcher监听器,所以基本上我会检查第一个edittext ontextchanged是否有任何值创建另一个edittext等等。如何检查...

回答 2 投票 0

将 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) { } });

回答 6 投票 0

以编程方式更改 TextInputLayout 聚焦和非聚焦提示颜色

我想在 TEXT INPUT LAYOUT 处于聚焦或未聚焦状态时更改相同的提示颜色。我有两个 TEXT INPUT LAYOUT 字段。两个字段的颜色相同。但它处于聚焦状态颜色

回答 4 投票 0

如何在 EditText 控件中的文本更改后 0.5 秒执行某些操作?

我正在使用 EditText 控件过滤我的列表。我想在用户完成 EditText 键入后 0.5 秒过滤列表。我使用 TextWatcher 的 afterTextChanged 事件来实现此目的...

回答 18 投票 0

点击EditText后隐藏键盘

我使用日期和时间选择器来处理会议日期字段,因此不需要键盘。如何防止单击该字段后显示键盘?输入图像描述...

回答 4 投票 0

从保存的实例恢复片段时如何防止editText自动填充文本?

我有一个保存并显示多个片段的活动。 当我重新输入片段时,它会自动在所有编辑文本中填充文本。所有字段也使用相同的文本。 例子: 打开片段并

回答 3 投票 0

EditText 文本换行在弹出窗口中不起作用

在此处输入代码我花了几个小时尝试解决 UI 问题。我需要设置一个 EditText 以将几行收集到弹出窗口中。 下面是 XLM 代码,如果...

回答 1 投票 0

Android 键盘隐藏 EditText

当我尝试在屏幕底部的 EditText 中写入内容时,软键盘会隐藏 EditText。我该如何解决这个问题?下面是我的 xml 代码。我在 Frag 中使用这个...

回答 12 投票 0

FloatingActionButton 不会更改 LIstView 中的 EditText 项目

我试图通过单击 FloatingActionButton 来更改 ListView 中的 EditText。我想从我的活动中的每个 ListView 项目的字符串数组中 editText.setText 公开课

回答 1 投票 0

如何在EditText中输入彩色文本

我想动态改变EditText中的颜色。 再具体一点: 按下按钮后,我输入到 EditText 的文本变为红色;(EditText 中已有的文本保持其原始状态

回答 4 投票 0

EditText 在 Android 中不接受输入?

我有一个编辑文本 我有一个编辑文本 <EditText android:id="@+id/selectvalue" style="@style/searchList" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:focusable="true" android:hint="@string/search_order_hint" android:imeOptions="actionSearch" android:padding="10dp" android:singleLine="true" android:textColorHint="@color/common_gray" android:textCursorDrawable="@null" android:visibility="invisible" /> 我已将 TextWatcher 附加到此。 selectedValue.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { showKeyBoard(mContext, selectedValue); return false; } }); selectedValue.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void afterTextChanged(Editable s) { if (!selectedAssetType.equals(OrderBookTypes.MUTUAL_FUND_TYPE)) { loadSearchFilterData(); } } }); public void showKeyBoard(Context context, EditText edit) { InputMethodManager m = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); if (m != null) { edit.requestFocus(); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT); } } private void loadSearchFilterData() { if (!selectedValue.getText().toString().isEmpty()) { String s = selectedValue.getText().toString(); List<BoOrderBookDao> filterList = new ArrayList<>(); for (int i = 0; i < sortedFilteredList.size(); i++) { if (sortedFilteredList.get(i).getDpVal().toLowerCase().contains(s.toLowerCase())) { filterList.add(sortedFilteredList.get(i)); } } orderBookModel.clear(); orderBookModel.addAll(filterList); } else { orderBookModel.clear(); orderBookModel.addAll(sortedFilteredList); } if (orderBookModel.size() == 0) { setErrorMsg(mContext.getResources().getString(R.string.no_data_available_txt)); } else { itemListLayout.setVisibility(View.VISIBLE); errorScrollview.setVisibility(View.GONE); } if (orderAdapter != null) { orderAdapter.requestType = requestType; orderAdapter.notifyDataSetChanged(); } } 但我无法在那里打字。我打字时不显示字符。如果我删除 orderBookModel.addAll(filterList); 行,那么我可以输入,但删除该行会破坏我的功能。谁能解决这个问题? 添加 orderAdapter.notifyDataSetChanged();在 orderBookModel 中添加数据后。 更新代码替换此代码: private void loadSearchFilterData() { if (!selectedValue.getText().toString().isEmpty()) { String s = selectedValue.getText().toString(); List<BoOrderBookDao> filterList = new ArrayList<>(); for (int i = 0; i < sortedFilteredList.size(); i++) { if (sortedFilteredList.get(i).getDpVal().toLowerCase().contains(s.toLowerCase())) { filterList.add(sortedFilteredList.get(i)); } } orderBookModel.clear(); orderBookModel.addAll(filterList); orderAdapter.notifyDataSetChanged(); // Add this } else { orderBookModel.clear(); orderBookModel.addAll(sortedFilteredList); orderAdapter.notifyDataSetChanged(); // Add this } if (orderBookModel.size() == 0) { setErrorMsg(mContext.getResources().getString(R.string.no_data_available_txt)); } else { itemListLayout.setVisibility(View.VISIBLE); errorScrollview.setVisibility(View.GONE); } if (orderAdapter != null) { orderAdapter.requestType = requestType; orderAdapter.notifyDataSetChanged(); } }

回答 1 投票 0

Android Espresso:如何将文本输入到嵌入 TextInputLayout 的 editText 中

寻找一种方法将 Text 或 typeText 替换为嵌入 TextInputLayout 中的编辑文本。 我尝试过一些这样的事情: 执行(ViewActions.typeTextIntoFocusedView(“字符串”)); ...

回答 4 投票 0

如何将所有json对象值存储在arraylist中?

我有以下响应...从这个响应我正在解析bulkprice数组及其对象,现在我正在尝试的是我需要将所有minqty值存储在一个数组列表中并想要转换所有

回答 5 投票 0

带有 maxLines 的 EditText - 如何显示顶行的一半

在我的布局中有 EditText 与 android:maxLines="4"。 当文本超过 4 行时,最后 4 行将强烈显示在 EditText 中。 这是设计使然。 但我怎样才能显示4条半线...

回答 1 投票 0

如何让EditText在打开软键盘时完全可见

在我的 Android 活动中,我有一个 EditText,前后都有其他布局。 当我单击 EditText 时,软键盘打开,视图滚动到足以让我看到 cu...

回答 1 投票 0

建议文本未在 Android 键盘中显示

当我使用 inputType 作为“textUri”时,建议文本输入不显示。 当我使用 inputType 作为“textUri”时,建议文本输入不显示。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context=".MainActivity"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter URI" **android:inputType="textUri"** android:imeOptions="actionDone"/> </RelativeLayout> 我尝试使用 setPrivateImeOptions 方法,但仍然提示文本未显示。 即使我使用了 android:inputType="textUri|textCapSentences|textAutoCorrect" 但没有用。 public class CompleteEditTextActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_text); EditText editText = findViewById(R.id.editText); editText.setPrivateImeOptions("com.android.internal.inputmethod:LatinIME"); } 已确定路径中的TYPE_TEXT_VARIATION_URI实现了shouldSuppressSuggestions的布尔值 packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/InputAttributes.java // TODO: Have a helper method in InputTypeUtils // Make sure that passwords are not displayed in {@link SuggestionStripView}. final boolean shouldSuppressSuggestions = mIsPasswordField || InputTypeUtils.isEmailVariation(variation) **|| InputType.TYPE_TEXT_VARIATION_URI == variation** || InputType.TYPE_TEXT_VARIATION_FILTER == variation || flagNoSuggestions || flagAutoComplete; mShouldShowSuggestions = !shouldSuppressSuggestions; 因此,当我们在 XML 中声明“textURI”时,键盘顶部的建议单词不会显示。

回答 1 投票 0

为什么导航到其他屏幕然后返回时,编辑文本输入会填充所有其他编辑文本?

我有一个登录屏幕,其中有两个编辑文本用户名和密码。一旦我填写了这些编辑文本,我就使用以下方法导航到注册屏幕: navController.navigate(R.id.registerFragment);当我来的时候...

回答 1 投票 0


© www.soinside.com 2019 - 2024. All rights reserved.