我的问题是我有一个包含2个EditText视图的登录屏幕。当我输入用户名并单击Enter时,它会添加更多行,但我希望它改为EditText密码。有人可以帮助我吗?
public void onClick(View v){
final TextView user = (TextView)findViewById(R.id.tnome);
final TextView pw = (TextView)findViewById(R.id.tpw);
if (user.getText().toString().equals("") || pw.getText().toString().equals((""))) {
Toast.makeText(MainActivity.this, "Têm de Preencher todos os Campos", Toast.LENGTH_SHORT).show();
user.requestFocus();
}else{
if (user.getText().toString().endsWith(" ")){
user.setText(user.getText().toString().substring(0,user.length()-1));
}
user.setText(user.getText().toString().toLowerCase());
if (user.getText().toString().equals("admin") && pw.getText().toString().equals("admin")){
startActivity(new Intent(MainActivity.this,Home.class));
user.setText("");
pw.setText("");
}
user.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER))
{
// Perform action on Enter key press
user.clearFocus();
pw.requestFocus();
return true;
}
return false;
}
});
pw.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER))
{
// Perform action on Enter key press
// check for username - password correctness here
return true;
}
return false;
}
});
}
}
答案 0 :(得分:1)
使用android:inputType="text"
(或another value)将输入文字限制为一行。
通常,当输入控件布局在布局文件(resx)中时,按ENTER将使焦点转到下一个字段。您不需要任何自定义处理代码来完成这项工作(即,您不应该在用户名字段上使用代码将ENTER设置焦点设置为密码字段)。
您可以使用<requestFocus />
标记在页面加载时强制关注字段。
<EditText
android:id="@+id/etUserName"
android:layout_margin="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:focusable="true"
>
<requestFocus />
</EditText>
<EditText
android:id="@+id/etPassword"
android:layout_margin="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:cursorVisible="true"
android:hint="Password"
/>
监听器的连接不起作用的最可能原因是代码仅在单击按钮时运行(它位于onClick
函数中)。在页面初始化期间执行密码(pw
)字段的连接 - 而onFinishInflate()
是一个好地方。
但是,您可能需要连接一个键监听器,在密码字段中按ENTER键提交数据(或进行验证)。