- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
1]无输入的4位数字输入框:
2] 4位数字输入框输入:
随着用户继续输入 4 位数的 pin 输入框变成了点,如果用户想要删除最后一位按下后退按钮,用户输入将被删除,点再次转换为输入框。如果用户中间输入不正确,他不能通过触摸将点转换为输入框,他必须从右到左遍历删除。
我看到可能的解决方案有 the custom widget 并根据通过实现 TextWatcher 检测到的用户输入设置 View 可见/消失。但是Android平台中现有的EditText widget是否有任何样式配置,利用它我可以在XML中编写代码来获得上述UI更改?
到目前为止,对于手动更改,我已经做了以下更改(为一个输入框给出的代码已用于创建一组 4 个输入框):
单个输入框的 XML 布局:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/pin_edit_box"
style="@style/pin_edittext_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:digits="0123456789"
android:focusable="true"
android:imeOptions="actionNext"
android:inputType="numberPassword" />
<ImageView
android:id="@+id/pin_input_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minEms="3"
android:focusable="false"
android:layout_centerInParent="true"
android:enabled="false"
android:src="@drawable/ic_green_dot"
android:visibility="gone" />
</RelativeLayout>
文本变化监听器:
pin_edit_box.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
int length = editable.toString().length();
if (length == 1) {
pin_edit_box_this.setVisibility(View.INVISIBLE);
pin_input_dot_this.setVisibility(View.VISIBLE);
pin_edit_box_next.requestFocus();
} else if (length == 0) {
// This part doesn't work as EditText is invisible at this time
// dot image view is visible
pin_edit_box_this.setVisibility(View.VISIBLE);
pin_input_dot_this.setVisibility(View.GONE);
pin_edit_box_this_previous.requestFocus();
}
}
});
当试图从中检测返回或删除按钮事件时
boolean onKeyDown (int keyCode,
KeyEvent event) {
}
键盘事件 KeyEvent.KEYCODE_DEL
永远不会被检测到使 View 在按下后可见/不可见。官方文件说,软键盘事件并不总是有效。
As soft input methods can use multiple and inventive ways of inputting text, there is no guarantee that any key press on a soft keyboard will generate a key event: this is left to the IME's discretion, and in fact sending such events is discouraged.
注意:以上截图来自印度货币交易的BHIM application。
最佳答案
查看此 PinView Library ,它几乎和你想要的一样。
它很容易使用:
添加依赖
dependencies {
compile 'com.chaos.view:pinview:1.3.0'
}
创建 PinView
而不是 EditText
<com.chaos.view.PinView
android:id="@+id/pinView"
style="@style/PinWidget.PinView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Hint."
android:inputType="text"
android:padding="@dimen/common_padding"
android:textColor="@color/text_colors"
android:textSize="18sp"
android:cursorVisible="true"
app:cursorColor="@color/line_selected"
app:cursorWidth="2dp"
app:itemCount="5"
app:itemHeight="48dp"
app:itemRadius="4dp"
app:itemSpacing="0dp"
app:itemWidth="36dp"
app:lineColor="@color/line_colors"
app:lineWidth="2dp"
app:viewType="rectangle" />
其他解决方法是创建您自己的 EditText
类并在用户键入时更改它
关于android - 在用户输入单个字符后将 EditBox 输入转换为点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295503/
我想在警报对话框中使用多个编辑文本,输入应由用户填写,并在单击警报消息的确定按钮后保存信息。 最佳答案 为此警报创建一个单独的布局,其中包含所有编辑文本并使用它。 关于android - 如何在警告对
我正在 Borland C++ Builder 中创建简单的应用程序。 我的代码是这样的: void __fastcall TForm1::Button3Click(TObject *Sender)
我从桌面选择了多个文件。 CFileDialog fileDlg(TRUE, _T("*.txt"), NULL,
1]无输入的4位数字输入框: 2] 4位数字输入框输入: 随着用户继续输入 4 位数的 pin 输入框变成了点,如果用户想要删除最后一位按下后退按钮,用户输入将被删除,点再次转换为输入框。如果用户中间
我目前有这个: 是否可以去除黑色描边并只突出显示?它是否违反了任何关于 Material 设计的谷歌指南 最佳答案 这完全是一个 android Lollipop 错误。它发生在 EditText 的
如何在多行 EditBox 中切换自动换行? 我可以使用或不使用它来创建它,但我不知道应该使用哪个消息来切换包装模式。 最佳答案 EditBox 不支持切换自动换行。没有可以发送的消息,也不能更改窗口
我使用这段代码在 XML 中创建了一个编辑框: 文本框呈现如下: 我怎样才能得到原生的 android EditText 焦点时橙色边框,白色背景等
我正在尝试创建一个 EditText 框,如下所示,它的左侧有一个图像,右侧有一个可编辑的文本区域,但我似乎完全不知道如何在机器人:|我可以找到将图像放在背景中(这样文本可以覆盖它)以及如何制作圆角的
如何使用 Win32 WinAPI 创建一个 EditBox,使其看起来像在 Visual C# 或 VB 中的 VS 设计器中放置一个编辑框(具有漂亮的顶部边框等)?这是一张图片,展示了它的外观以及
我有一个如下定义的编辑框 我添加了一个背景图片,它是一个自定义的编辑框。现在的问题是,当我在其中输入文本时,因为我使用了 wrap_co
是否有任何 WinAPI 可以在编辑框中获取选定的文本?取光标的初始位置和最终位置?我告诉编辑框的 HWND 和函数返回所选文本的函数? 最佳答案 我不知道执行此操作的单个函数。 发送EM_GETSE
我想知道如何制作一个简单的函数来使光标在 EditBox 中出现和消失,这是一个简单的函数,我传递窗口的 HWND 和 EditBox 的名称只是为了消失和出现光标? 谢谢(: 最佳答案 HideCa
我有一个小问题困扰了我几个小时。 在我的 WinForms (.NET 3.5) 应用程序中,我在运行时在 TableLayoutPanel 中创建了一些 ComboBoxes (DropDownSt
我有一个编辑框,我在其中定义了一个 android:drawableLeft 属性。 我希望 EditBox 看起来像这样(来自 Instagram 应用): 请注意,图片已正确居中,并且图片的上/右
我有一个带有 2 个编辑文本框的简单应用程序。当在第一个框中输入输入时,将执行一组计算。如果将输入输入另一个,则会发生一组不同的计算。 因此,如果在第一个框 etBox1 中键入了一个数字,并且用户离
我的图层上有一个编辑框。 var ebox = new cc.EditBox(cc.p(200, 30)); ebox.setPosition(size.width / 2 - 50, size.he
我需要将搜索图像镜头作为提示放入 EditText 中。可以在 Android 中实现吗? 最好的问候,, 最佳答案 我总是通过更改可绘制对象的权限来解决这个问题。 您可以在布局 xml 文件上执行此
我有一个 EditBox HWND tbLog,以及以下函数(不起作用): void appendLogText(char* newText) { int len = GetWindowTextL
我有 C#.NET WF 中的简单计算器。但是当我向编辑框中插入数字以外的内容时,我的程序崩溃了。我应该如何避免这种崩溃? private void doMath() { int n1 = I
我在 QML 中创建了一个带有一些文本框的 QtQuick 应用程序。我想在我的 C++ 代码中使用这些文本框的值。那么如何从 C++ 代码中获取这些值呢? 最佳答案 它可以是这样的: QML 文件:
我是一名优秀的程序员,十分优秀!