- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试制作 Pin 进入页面,我创建了 4 个 EditText,并在我的 Activity 下方创建了一个函数。我的问题是,当我单击退格按钮时,我想将当前 EditText 聚焦到 Before(Back) EditText,但 Key 监听器不起作用。
逻辑很简单,当用户输入数字编辑文本时,它失去焦点,下一个编辑文本获得焦点然后就这样了。但问题是当我单击后退空格时,我想在 edittext 之前返回以再次输入数字。我试图在 beforeTextChange 中插入 keyListener,但它不起作用。
private void SetTextChange(final EditText etCurrent, final EditText etForward,final EditText etBack, final boolean isLast, final int currentPosition)
{
etCurrent.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) {
if (etCurrent.getText().length() == 1 && !isLast ) {
etCurrent.setTypeface(null, Typeface.NORMAL);
etCurrent.clearFocus();
etForward.requestFocus();
etForward.setCursorVisible(true);
etCurrent.getBackground().setColorFilter(getResources().getColor(R.color.lavender_indigo), PorterDuff.Mode.SRC_ATOP);
} else if (etCurrent.length() == 0) {
etCurrent.getBackground().setColorFilter(getResources().getColor(R.color.french_gray), PorterDuff.Mode.SRC_ATOP);
etCurrent.setTypeface(null, Typeface.SANS_SERIF.getStyle());
etCurrent.setTypeface(null, Typeface.NORMAL);
etCurrent.clearFocus();
etBack.requestFocus();
etBack.setCursorVisible(true);
}
if (etCurrent.length() != 0) {
Integer currentKey = Integer.parseInt(etCurrent.getText().toString());
keyList.set(currentPosition, currentKey);
} else
keyList.set(currentPosition, -1);
if (keyList.size() > 3)
showToast(keyList.get(0) + " " + keyList.get(1) + " " + keyList.get(2) + " " + keyList.get(3));
}
@Override
public void afterTextChanged(Editable s) {
}
});
/*curText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View arg0, boolean arg1) {
curText = etCurrent;
backText = etBack;
curText.setText("");
}
});*/
}
这也是我的EditText示例xml之一。(其他同理)
<EditText
android:layout_column="1"
android:layout_columnWeight="1"
android:id="@+id/etActivationDigit1"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:textSize="80dp"
android:textAlignment="center"
android:gravity="center_horizontal"
android:hint="*"
android:textColorHint="@color/french_gray"
android:backgroundTint="@color/french_gray"
android:fontFamily="sans-serif"
android:textColor="@color/perfume"
android:maxLength="1"
android:inputType="number"
/>
我只是想在用户输入错误的数字时删除并返回焦点。注意:当你填写所有字段时,你会看到你可以删除并返回,但我想返回 pin 代码的中间。谢谢。
etCurrent.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(etCurrent.getText().toString() == "" && keyCode == event.KEYCODE_DEL)
{
etCurrent.setText("");
etCurrent.clearFocus();
etBack.requestFocus();
etBack.setText("");
}
return false;
}
});
当我触摸退格键时,我的退格键监听器不会触发,但它会触发所有其他字符。
最佳答案
这对我的 4 位数密码 Activity 有效。
private void setupInputListeners() {
verificationCode1EditText.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) {
if (s.length() == 1) {
verificationCode2EditText.requestFocus(View.FOCUS_DOWN);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
verificationCode2EditText.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) {
if(count == 0) {
verificationCode1EditText.requestFocus(View.FOCUS_DOWN);
} else {
if (s.length() == 1) {
verificationCode3EditText.requestFocus(View.FOCUS_DOWN);
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
verificationCode3EditText.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) {
if(count == 0) {
verificationCode2EditText.requestFocus(View.FOCUS_DOWN);
} else {
if (s.length() == 1) {
verificationCode4EditText.requestFocus(View.FOCUS_DOWN);
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
verificationCode4EditText.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) {
if(count == 0) {
verificationCode3EditText.requestFocus(View.FOCUS_DOWN);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
关于Android 如何在单击退格键时聚焦另一个编辑文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385755/
我有一个登录框,当 出现时,它会上下滑动/切换。单击链接。 这是一个尺寸约为 150 像素 x 100 像素的 DIV。 当有人点击此 DIV 外部时,我希望 DIV 滑动备份。我一直在玩 focu
jQuery 会阻止这种类型的行为吗? $("input").focusout(function() { $(this).focus(); }); 最佳答案 这是如何完成的(跨浏览器工作):
我想将聚焦和未聚焦窗口的 Alpha 设置为 90% 和 70%,而不是使用边框。这将适用于所有窗口,除了那些匹配某些标准(例如 className =“Gimp”)的窗口。我如何在我的 xmonad
我的布局中有一个 Recyclerview 和一个 EditText。 当我在 EditText 外部单击(即单击 Recyclerview)时,我希望 Recyclerview 获得焦点,而 Edi
我正在开发一个使用旧版 jQuery 1.3.2 的元素。我需要在 focus 上 blur 输入值并在 focusout 上返回它(如果没有改变)(不能使用 placeholder在这里)。 这就是
我有一个带有几个 TextViews 的自定义抽屉导航。这是布局: 问题是,如果我没有为 TextView
是否有一种简单的方法可以使我的应用程序的 float 工具选项板永久处于事件状态?它们都与打开的文档相关,因此没有理由让它们在任何时间点处于不活动状态。 最佳答案 使用 NSPanel 作为实用程序窗
尽管阅读了我可以在developer.android.com和stackoverflow上获得的所有内容,但是我确实认为应该可以实现,但是我仍然不知道该怎么做。 我正在尝试使用OpenGL ES 2.
我想在页面加载时聚焦一个元素( slider /轮播),以允许使用箭头键立即控制 slider 。 JQuery 的 .focus() 可以工作,但会自动将元素滚动到 View 中。这是有限视口(vi
我正在尝试让我的代码针对 Mozzila 中 14 年未修复的错误,该错误无法重新关注输入。我在多个地方发现(google mozilla focus not working 中的前 20 个结果中的
我有 ViewController,我想通过焦点引擎检索控制权。首先,我尝试通过要求自己查看来启动。 if settingsFilterSegment.isFocused {} 但我变得错误了,所以我
我想以编程方式将焦点设置在连续一列的表格中 NSTableCellView 中的两个编辑字段之一上,以便用户可以立即编辑该字段。在我的示例中,我可以选择该行(按下按钮后),但我找不到将焦点设置在特殊字
我创建了一个小的 Tab-Layout。 现在我如何根据 TabWidget 的状态(聚焦、按下...)指定它的颜色 我构建了一个新的 .xml,但我不知道如何将它设置到我的选项卡:
我有一个带有 JTree 的 JDialog,其中包括 DefaultMutableTreeNode 及其子节点。我希望在显示 JDialog 时聚焦树的节点之一。只需使用 tree.requestF
当我单击 EditText 时,会出现软键盘。我不希望在单击 EditText 时出现键盘,但是,我想获得 EditText 的力量。我想在没有键盘的情况下编辑它。 editText.setOnCli
在下图中,您可以看到“>”符号周围有一个虚线的“内部”边框,表示该按钮已获得焦点。 (我还在按钮周围添加了一个蓝色边框) 在我构建这些按钮的代码中,我正在做: setTimeout(function(
我在 css 上相当“新手”,并试图在主 div 聚焦时更改 FontAwesome 图标的颜色。我尝试了几种方法,尝试使用 div 的 id 或 class 在 focus 上更改它的颜色,但都没有
我如何判断焦点事件是由于输入按下=表单提交而发生还是仅仅因为单击而发生?进入控制台的事件数据是“focusout”类型,没有相关信息 $(".clientrow[clientid="+clientid
我有个小问题。目前,我正在使用 WordPress 开发一个带有 Flash 游戏的简单网页。 例如考虑这个页面:http://ggames.eu/2015/11/25/prince-of-persi
A 有一个 ListBox,需要在特定情况下聚焦特定项目(例如,显示搜索结果时)。这是通过附加属性使用以下函数完成的: public static void OnElementIndexPropert
我是一名优秀的程序员,十分优秀!