AutoCompleteTextView
1 定义:
根据输入进行提示的控件
2 类的继承关系
3 简单使用:
3-1 布局:activity_main.xml
<RelativeLayout 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"
tools:context=".MainActivity" >
<AutoCompleteTextView
android:id="@+id/actv"
android:layout_width="match_parent"
android:completionThreshold="1"
android:layout_height="wrap_content" />
</RelativeLayout>
completionThreshold:输入第几个值才开始进行提示。1:从输入第一个值开始提示,若不添加这个属性,则不提示。
Threshold:临界值。
3-2 MainActivity.java
package com.cqc.autocompleteview;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
private static final String[] texts = new String[] { "aa", "ab", "ac",
"bb", "bc", "bd", "be" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.actv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_dropdown_item_1line,
texts);
actv.setAdapter(adapter);
}
}
4 属性和方法
4-1 xml属性:
android:completionhint="" ---提示的内容
4-2 方法:
setCompletionHint(charSequene): 设置提示内容
使用AutoCompleteTextView实现登陆界面提示用户名和自动填入密码
简介
登陆时根据输入的账号进行提示,输入账号完成后自动填入密码
效果图
代码
public class MainActivity extends Activity {
private AutoCompleteTextView autoCompleteTextView;
private EditText editText;
private SharedPreferences sp;
private String[] keys;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
initSP();
initView();
}
private void initView() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, keys);
autoCompleteTextView.setAdapter(adapter);
//用户名输入完成后自动填入密码
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {
String pwd = sp.getString(autoCompleteTextView.getText().toString().trim(), "");
editText.setText(pwd);
}
});
}
//存放用户名和密码,和所有密码
private void initSP() {
//存放用户名和密码
sp = getSharedPreferences("password", MODE_PRIVATE);
sp.edit().putString("18100000001", "111111").putString("18100000002", "222222").putString("18100000003", "333333").putString("18100000004", "444444")
.putString("18100000005", "555555").commit();
//取出所有密码
keys = new String[sp.getAll().size()];
keys = sp.getAll().keySet().toArray(new String[0]);//new String[int ],int 无所谓
}
private void findViews() {
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
editText = (EditText) findViewById(R.id.editText);
}
}