Android(安卓)高级控件(一)
16lz
2021-01-26
一:AutoCompleteTextView自动提示
在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextView实现的。
xml页面设置控件:
<AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="1" android:id="@+id/actv_main_tv" />
activity中简单模拟一个数据源,设置适配器以及监听事件
//自动补全 actv_main_tv = (AutoCompleteTextView) findViewById(R.id.actv_main_tv); //定义数据源 String data[]={"张三","张三丰","李四","李雷","110","114","119","120","12306"}; //适配器 ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actv,data); //给控件设置适配器 actv_main_tv.setAdapter(adapter); }
二:MultiAutoCompleteTextView多段自动补全
可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配
xml页面设置控件:
<MultiAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="1" android:id="@+id/mctv_main_mv" />
activity中模拟一个数据源,设置适配器以及监听事件:
//多段自动补全 mctv_main_mv = (MultiAutoCompleteTextView) findViewById(R.id.mctv_main_mv); //定义数据源 String data[]={"张三","张三丰","李四","李雷","110","114","119","120","12306"}; //适配器 ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actv,data); //设置分隔符(默认,) MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer(); mctv_main_mv.setTokenizer(tokenizer); //给控件设置适配器 mctv_main_mv.setAdapter(adapter);
三:Spinner下拉列表
Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。
这里我们完成一个使用spinner的二级联动:
<1>首先设置连个下拉控件:
<Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/sp_ld_1" > Spinner> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/sp_ld_2" android:layout_marginLeft="50dp" > Spinner>
<2>activity中模拟数据
sp_ld_1 = (Spinner) findViewById(R.id.sp_ld_1); sp_ld_2 = (Spinner) findViewById(R.id.sp_ld_2); pro = new String[]{"湖南","广东","山西"}; map = new HashMap>(); a = new ArrayList<>(); a.add("郴州"); a.add("永州"); map.put("湖南",a); a = new ArrayList<>(); a.add("深圳"); a.add("韶关"); map.put("广东",a); a = new ArrayList<>(); a.add("晋城"); a.add("长治"); a.add("运城"); a.add("太原"); map.put("山西",a);
<3>设置适配器
ArrayAdapter proa=new ArrayAdapter(this,android.R.layout.simple_list_item_1,pro); sp_ld_1.setAdapter(proa);
<4>监听事件
sp_ld_1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { List myl=map.get(pro[position]); ArrayAdapter prob=new ArrayAdapter(LD2Activity.this,android.R.layout.simple_list_item_1,myl); sp_ld_2.setAdapter(prob); } @Override public void onNothingSelected(AdapterView<?> parent) { } });
效果如图:
四:ListView
ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件
仿设置页面:
private String big[]={"网络","个人"}; private Map map=new HashMap<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lv); LinearLayout ll = (LinearLayout) findViewById(R.id.aaaaa); map.put(big[0],new String[]{"wifi","热点"}); map.put(big[1],new String[]{"隐私","安全"}); //将控件添加到布局中去: for (int i = 0; i < big.length; i++) { String[] a = map.get(big[i]); TextView tv= new TextView(this); ListView lv= new ListView(this); ArrayAdapter aa=new ArrayAdapter(this,android.R.layout.simple_list_item_1, a); tv.setText(big[i]); lv.setAdapter(aa); ll.addView(tv); //调用内部类实现监听 new bb(a, lv); } } class bb{ private String[] x; public bb(final String x[],ListView lv){ this.x=x; lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(LVActivity.this, x[position], Toast.LENGTH_SHORT).show(); } }); } }
更多相关文章
- Android(安卓)Studio下添加assets目录
- GitHub 上受欢迎的 Android(安卓)UI Library 整理二
- android inflate初探
- android 自定义ViewAnimator文字轮播广告控件——自定义控件学习
- Android基于HttpUrlConnection类的文件下载实例代码
- Paint常用方法介绍
- Eclipse下Android编程代码自动提示
- Android(安卓)RecyclerView +SnapHelper 实现横向滚动自动滚动到
- android输入框只能输入数字和小数点