实现用户登录,界面,自动聚焦电话号码输入框,按回车或换行符,自动跳转到密码输入框
获取密码 电话输入框中的内容,电话号码超过11位自动聚焦到密码输入框
**background:@null:**把edittext默认的下划线去掉
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<!--
输入类型inputtype:
属性值:textpassword 密码
phone 输入类型为手机号
date 日期
number 数字
numberPassword 数字密码
-->
<EditText
android:id="@+id/et_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入手机号码"
android:inputType="phone"
/>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请输入密码"
/>
<Button
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_info"/>
</LinearLayout>
package com.example.syx.edittextdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements TextWatcher{
private EditText et_phone;
private EditText et_password;
private Button submit;
private TextView tv_info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件对象
et_phone = (EditText)findViewById(R.id.et_phone);
et_password= (EditText)findViewById(R.id.et_password);
submit = (Button)findViewById(R.id.submit);
tv_info = (TextView)findViewById(R.id.tv_info);
//为手机号码编辑框获取焦点
et_phone.requestFocus();
//为按钮添加onclick事件
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取编辑框中的内容,并转化为字符串
String phone= et_phone.getText().toString();
String password=et_password.getText().toString();
//在textview中显示的内容
tv_info.setText("手机号码为:"+phone+",密码为:"+password);
}
});
//给电话号码编辑框添加文本框监听器
et_phone.addTextChangedListener(this);
}
//实现输入完成后 光标的自动跳转到下一个editVIew
/*1.把MainActivity继承TextWatcher类,然后添加三个方法
剩余步骤在文本改变触发三个方法详写
* */
//在文本框改变之前触发,
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//设置文本长度,用11-文本长度
int length=11-s.length();
if(length==0){
et_password.requestFocus();
}
}
//在文本框改变时触
//实现手机号码为11位时,焦点自动跳转到下一个文本编辑框
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
//在文本框改变之后触发
//当有回车符或者换行符时,焦点自动向下一个文本编辑框跳转
@Override
public void afterTextChanged(Editable s) {
//2.获取编辑框中的内容,并转为字符串
String str=s.toString();
//3.判断str中是否包含回车,换行符
if(str.indexOf("\n")>=0||str.indexOf("\r")>=0){
//4.将换行符或回车符去掉
et_phone.setText(str.replace("\n","").replace("\r",""));
//让密码输入框自动获取焦点
et_password.requestFocus();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}