高級控制元件
1.自動完成文本控制元件
在搜索引擎(百度、搜狗)輸入幾個文字,會出來一些提示,可以減少用戶的輸入,提高程式的效率,剛才看到的自動提示,ajax技術,
1.1AotoCompleteTextView
? 取消下拉:Esc或BackSpace鍵
步驟:
1.定義一個字串陣列(有后臺了,從后臺讀取),用于保存自動提示的資料,
2.將此字串陣列放入到陣列配接器(ArrayAdapter),
3.利用AutoCompleteTextView的setAdapter()方法,將字串陣列加入到AutoCompleteTextView物件中,設定自動完成文本控制元件的配接器,
2.MutilAutoCompleteTextView
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="自動完成文本框實體"
android:textSize="20dp"/>
<!--加入實體-->
<AutoCompleteTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/myAuto"
android:hint="請輸入您需要的城市"/>
<!--加入多行 -->
<MultiAutoCompleteTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/myMulti"
android:hint="請輸入您需要的城市名稱"/>
后臺代碼:
package com.aaa.zyg001;
// 這個是包的定義
//import匯入相關的類;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;
import org.w3c.dom.Text;
import java.util.Calendar;
//直接這個類,實作一個抽象類的抽象方法
public class MainActivity extends AppCompatActivity {
//1.定義字串陣列;
String[]arr={"鄭州","安陽","洛陽","駐馬店","安慶","安溪","安陽西","安陽東"};
AutoCompleteTextView myAuto;
MultiAutoCompleteTextView myMulti;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取內容
//1.當前物件,單行專案行;填充內容
ArrayAdapter<String>adapter=new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,arr);
// System.out.println(adapter+"-------");
myAuto=(AutoCompleteTextView)findViewById(R.id.myAuto);
myMulti=(MultiAutoCompleteTextView)findViewById(R.id.myMulti);
System.out.println(myAuto+"======");
myAuto.setAdapter(adapter);
//設定顯示自動提示需要的字串
myAuto.setThreshold(1);
//-------------------------------------------------------------
myMulti.setAdapter(adapter);
//用來區分不同的子串;
myMulti.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
myMulti.setThreshold(1);
}
}
效果圖:

2.下拉串列控制元件
Spinner,當用戶單擊該控制元件的時候,彈出選擇串列供用戶選擇,且只能選擇一項,同網頁中的Select,同C#中的Combox,
使用步驟:
1.先定義一個字串陣列,用于保存下拉串列的資料;在實際使用中,可以從資料庫獲取資料;
2.將此字串陣列存入陣列配接器(ArrayAdapter),
3.利用Spinner的setAdapter()方法,將配接器加入到Spinner物件中,設定自動完成文本框的配接器,
屬性:
spinnerMode 設定下拉串列的模式;dialog或者dropdown
dropDownWidth getDropDownWidth()
? setDropDownWidth(int pix) 設定下拉框的寬度
gravity getGravity()/setGravity() 設定選定專案的對齊方式
事件
? setOnItemSelectedListener(AdapterView.OnItemSelectedListener) 當串列被選中時觸發的事件
<!--設計界面 -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:text="請選擇城市"
android:textSize="20dp"/>
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/citySp"
android:spinnerMode="dropdown"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_city"
android:textSize="20dp"/>
后臺代碼
//1.變數和資料的宣告
TextView tv_city;
Spinner citySp;
//字串陣列
String[]arr={"深圳","東莞","珠海","哈爾濱"};
//獲取內容
tv_city=(TextView) findViewById(R.id.tv_city);
citySp=(Spinner) findViewById(R.id.citySp);
//配接器:和自動完成文本一致
ArrayAdapter<String>adapter=new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,arr);
citySp.setAdapter(adapter);
//下拉串列的事件
citySp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,long id) {
//當我們在下拉串列上單擊
tv_city.setText(arr[position]);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
效果圖:

3.進度條和滑塊
進度條:
用于某些資源的加載、檔案下載和大量資料處理等,使用進度條為用戶提供明確的操作結束時間,讓用戶能夠了解目前程式的進度及其狀態,
3.1 ProgressBar
屬性:
max getMax() setMax() 設定或獲取進度條的上限
progress getProgress() setProgress() 設定或獲取進度條的進度
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="檔案下載進度"
android:textSize="20dp"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fileDown"
style="?android:attr/progressBarStyleHorizontal"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="模擬檔案下載"
android:id="@+id/btn_progress"/>
后臺代碼
public class MainActivity extends AppCompatActivity {
//1.變數
ProgressBar fileDown;
Button btnProgress;
int progress=0; //進度為0
int max=102400;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//============================
fileDown=(ProgressBar) findViewById(R.id.fileDown);
btnProgress=(Button)findViewById(R.id.btn_progress);
//設定進度條的最大值
fileDown.setMax(max);
//設定按鈕的事件
btnProgress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//一步一步來
int seed=max-progress;
Random random=new Random();
int current=random.nextInt(seed);
progress=progress+current;
fileDown.setProgress(progress);
}
});
}
}
運行效果:
nt seed=max-progress;
Random random=new Random();
int current=random.nextInt(seed);
progress=progress+current;
fileDown.setProgress(progress);
}
});
}
}
運行效果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/302826.html
標籤:其他
