android实现既能单选又能输入的控件 很类似C#中ComBox控件;
public class MainActivity extends Activity {
private AutoCompleteTextView ac_1;
private ArrayList<String> list ;
private ArrayAdapter<String>adapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setView();
setListener();
}
private void setListener() {
ac_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ac_1.showDropDown();//点击控件显示所有的选项
}
});
}
private void setView() {
ac_1 =(AutoCompleteTextView) findViewById(R.id.ac_1);
setData();
adapter =new ArrayAdapter<>(this, R.layout.item_ac, R.id.tv_1, list);
ac_1.setAdapter(adapter);
}
private void setData() {//设置数据源,这里只用了单纯的文字;
list =new ArrayList<>();
list .add("步行");
list .add("步行88");
list .add("轮椅");
list .add("轮椅77");
list .add("平车");
list .add("平车22");
list .add("担架");
list .add("担架3");
list .add("自行车");
list .add("自行车2");
}
}
下面是布局文件比较简单只有AutoCompleteTextView一个控件;
<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="${relativePackage}.${activityClass}" >
<AutoCompleteTextView
android:id="@+id/ac_1"
android:completionThreshold="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
android:completionThreshold=”1”这个属性是输入框中输入几个字符开始有筛选提示功能;
adapter =new ArrayAdapter<>(this, R.layout.item_ac, R.id.tv_1, list);
创建适配器adapter时需要一个 上下文对象,一个布局文件,和显示文字用的TextView控件,最有一个是数据源;(如果传不同的数据源选用不同的Adapter);
下面是这个布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
这样就能像Spinner那样单选,又能像输入框一样输入。