soc*_*ose 27 android setfocus android-edittext
在edittext中,输入"Enter"键后,系统会在其中创建一个新行.我想专注于下一个edittext,没有换行.如何编码?我在xml中的代码如下
<EditText
android:id="@+id/txtNPCode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_alignLeft="@+id/lblNPCode"
android:layout_below="@+id/lblNPCode"
android:layout_centerHorizontal="true"/>
<EditText
android:id="@+id/txtCNPCode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_alignLeft="@+id/lblCNPCode"
android:layout_below="@+id/lblCNPCode"
android:layout_centerHorizontal="true"/>
Run Code Online (Sandbox Code Playgroud)
我也是setOnKeyListener中的电脑密钥代码
tCNPCode.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == 66) {
Toast.makeText(S_PCode.this, "Enter Key", Toast.LENGTH_LONG).show();
//tNPCode.setFocusable(true);
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
小智 36
你甚至不必使用OnKeyListener.只需添加一行android:singleLine="true"即可EditText.此操作后的EditText行为完全符合您的要求.所以,在你的特殊情况下:
<EditText
android:id="@+id/txtNPCode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_alignLeft="@+id/lblNPCode"
android:layout_below="@+id/lblNPCode"
android:layout_centerHorizontal="true"
android:singleLine="true"
/>
<EditText
android:id="@+id/txtCNPCode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_alignLeft="@+id/lblCNPCode"
android:layout_below="@+id/lblCNPCode"
android:layout_centerHorizontal="true"
/>
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.
Cri*_*ian 14
你必须使用这种requestFocus方法.在你的情况下,它将是这样的:
tCNPCode.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == 66) {
txtCNPCode.requestFocus();
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Sta*_*tan 10
最好的方法是使用inputType的一个选项,例如:android:inputType="textPersonName"
这将实现想要的效果.查看其他选项,它将在未来节省一些时间:)
你不应该使用android:singleLine ="true",因为它已被弃用.以下是文件说明的内容:
不推荐使用此属性,并将其替换为inputType属性中的textMultiLine标志.在更改现有布局时要小心,因为singeLine的默认值为false(多行模式),但如果为inputType指定任何值,则默认为单行模式.(如果找到了singleLine和inputType属性,则inputType标志将覆盖singleLine的值.).
考虑IME选项,这里有良好的描述http://androidcookbook.com/Recipe.seam;jsessionid=C824437B48F346E23FBE5828969029B4?recipeId=422和这里的文档http://developer.android.com/reference/android/widget/TextView.html#attr_android :imeOptions.
你唯一需要的是在每个EditText上添加属性android:imeOptions ="actionNext".键盘出现时带有Next键,其中Enter曾经是,并允许导航到下一个EditText.
但是"actionNext"的顺序是从上到下.例如,如果您有水平布局:
<LinearLayout android:orientation="horizontal" >
<EditText android:id="@+id/et1" android:imeOptions="actionNext" />
<EditText android:id="@+id/et2" android:imeOptions="actionNext" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
et2从未得到关注.你应该在代码中修复它:
et1.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event)
{
switch (actionId)
{
case EditorInfo.IME_ACTION_NEXT:
boolean result = false;
TextView v1 = (TextView) v.focusSearch(View.FOCUS_RIGHT);
if (v1 != null)
result = v1.requestFocus(View.FOCUS_RIGHT);
else if (!result)
{
v1 = (TextView) v.focusSearch(View.FOCUS_DOWN);
if (v1 != null)
result = v1.requestFocus(View.FOCUS_DOWN);
}
if (!result)
v.onEditorAction(actionId);
break;
default:
v.onEditorAction(actionId);
break;
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
原始链接:https://groups.google.com/forum/?fromgroups =#!topic / android-Developers/OkyGOG6XtE8w
| 归档时间: |
|
| 查看次数: |
41258 次 |
| 最近记录: |