Android( 基本控件)、progressBar+Handler(进度条)、AutoCompleteTextView(单行自动补全)、MultiAutoCompleteTextView(多行补全)
2017-06-12 16:56
761 查看
AutoCompleteTextView (文本框自动补全)
、
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.advancedcontrol_two.MainActivity" > <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/at_main_one" android:completionThreshold="1" /> </LinearLayout>
JAVA
package com.example.advancedcontrol_two; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取到自动补全的 控件 AutoCompleteTextView autoCompleteTextView= (AutoCompleteTextView) findViewById(R.id.at_main_one); //定义数据 //定义数据源 String data[]={"张三","张三丰","李四","李思峰","王瑞国","王宝绿","110","120","119","114","12306"}; //建立适配器 ArrayAdapter arrayAdapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,data); //为 AutoCompleteTextView设定适配器 autoCompleteTextView.setAdapter(arrayAdapter); } }
MultiAutoCompleteTextView (文本多行自动补全)
可以实现多行自动补全,但还是必须设定分隔符,号xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.advancedcontrol_two.MainActivity" > <MultiAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/at_main_one" android:completionThreshold="1" //设置触发行数 /> </LinearLayout>
JAVA
package com.example.advancedcontrol_two; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取到自动补全的 控件 MultiAutoCompleteTextView autoCompleteTextView= (MultiAutoCompleteTextView) findViewById(R.id.at_main_one); //定义数据 //定义数据源 String data[]={"张三","张三丰","李四","李思峰","王瑞国","王宝绿","110","120","119","114","12306"}; 4000 //建立适配器 ArrayAdapter arrayAdapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,data); //设置分隔符 默认 , 隔开。分隔符,必须要设定,否者没效果 MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer(); autoCompleteTextView.setTokenizer(tokenizer); autoCompleteTextView.setAdapter(arrayAdapter); } }
progressBar+Handler(进度条)
为什么需要设定线程来更新数据?因为谷歌公司设定耗时操作,在主线程,会ANR :application not responsing应用程序无响应,故此就必须把,操作,写入子线程。
子线程的数据通过第三者Handler类,进行更新操作
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.advancedcontrol_two.MainActivity" > <ProgressBar android:id="@+id/progressBar_main_one" style="?android:attr/progressBarStyleHorizontal" //水平进度条,它还有圆形,等其他几个形态 android:layout_width="match_parent" android:layout_height="30dp" android:max="100" //最大进度条量 android:progress="10" //设置当前进度 /> <TextView //用来展示进度量 android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:id="@+id/tv_main_one" /> <Button //设置开始 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始跑" android:id="@+id/bt_main_one" /> </LinearLayout>
JAVA
package com.example.advancedcontrol_two; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.MultiAutoCompleteTextView; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; private ProgressBar progressBar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取到进度条 progressBar = (ProgressBar) findViewById(R.id.progressBar_main_one); //取到显示文本,用来显示进度 textView = (TextView) findViewById(R.id.tv_main_one); //取Button Button button= (Button) findViewById(R.id.bt_main_one); //给Button设点击事件 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new MyThread().start(); //点击开始就,新建 加进度条的线程,然后通过handler 更新数据 } }); } Handler handler=new Handler(){ @Override //用来接收消息,更新UI 进度数据 public void handleMessage(Message msg) { super.handleMessage(msg); //把线程更新的数据,接收,设置到文本显示 textView.setText(msg.what+"%"); } }; //继承 Thread 建立一个线程,来执行进度条更新工作 class MyThread extends Thread{ @Override public void run() { for (int i = 0; i <100 ; i++) { //设置进度 progressBar.setProgress(i); //把数据传给 handler 中转 handler.sendEmptyMessage(i); try { sleep(500); //每次休息500毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
相关文章推荐
- Android 自动补全提示输入AutoCompleteTextView、 MultiAutoCompleteTextView
- Android-基本控件(AutoCompleteTextView,MultiAutoCompleteTextView,ToggleButton)
- Android 自动补全提示输入AutoCompleteTextView、 MultiAutoCompleteTextView
- Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
- 动态自动匹配输入的控件AutoCompleteTextView和MultiAutoCompleteTextView
- Android学习_01——AutoCompleteTextView控件和MultiAutoCompleteTextView控件的应用
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全
- Android学习起步 - AutoCompleteTextView及MultiAutoCompleteTextView控件使用
- Android:UI控件AutoCompleteTextView、MultiAutoCompleteTextView、include、merge、Tokenizer
- Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
- Android控件——AutoCompleteTextView和MultiAutoCompleteTextView
- Android:控件AutoCompleteTextView 和MultiAutoCompleteTextView的使用
- Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
- Adapter类型控件之AutoCompleteTextView(自动完成文本框)&MultiAutoCompleteTextView(多提示项的自动完成文本框)
- Android中的AutoCompleteTextview和MultiAutoCompleteTextview控件
- Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
- MultiAutoCompleteTextView和AutoCompleteTextView两个自动完成功能控件的使用
- AutoCompleteTextView 和 MultiAutoCompleteTextView 自动完成文本控件
- 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar, SeekBar, AutoCompleteTextView, MultiAutoCompleteTextView【转】