控件簡介
==============================================================
控件的設定主要依靠layout檔案夾中的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" >
<TextView
android:layout_width="wrap_content" 《寬。樣式屬性都是andoid:xxx="xxx"格式。wrap_content自适應内容寬度。fill_parent自填充父容器寬度。match_parent
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding_medium" 《@表示引用values檔案夾dimen.xml中的資料/padding_medium屬性值
android:text="@string/hello_world" 《引用values檔案夾string.xml中的hello_world
tools:context=".MainActivity" />
</RelativeLayout>
其他重要屬性:
控件布局垂直:android:oriention="vertical"
添加id:android:id="@+id/name"
通過java代碼查找控件:R代表gen檔案夾中的R.java。記錄所有變量的位址。
super.findViewById(R.id.name)
super.setContentView(layout.layoutParams)增加布局元件
樣式表的用法:
建立一個mystyle.xml,放入values檔案夾。
格式:
<xml xxx..>
<resource>
<style name="mystyle">
<item name="android:textSize">12px</item>
</style>
</resource>
引用:
在layout檔案夾中的程式.xml 增加:
android:style="@style/mystyle"即可
使用values檔案夾下strings.xml等中的 <string name="app_name">timemanager</string>值:
android:name="@string/app_name"
view 類。所有UI的父類。
android.widget是程式中所有元件類的父類
TextView類 文本控件。相當于網頁中的label
重要屬性
顯示成超連結:android:autoLink="web|email"
選中後即全選 selectAllOnFocus=“true”
Button 類 按鈕
重要屬性:
EditText 可編輯文本框
重要屬性:
隻能輸入數字 android:numeric="interger"
密碼方式顯示:android:password="true"
限制字數: android:maxLength="20"
CheckBox 多選按鈕
代碼中but.setChecked(true)或者android:checked="true"
RadioButton和RadioGroup
android:checkedButton=“@+id/name”
另:
必須用組包含單個的:
<RadioGroup 屬性>
<RadioButton 屬性 />
</RadioGroup>
Spinner下拉清單
重要知識點
清單的提示資訊(在表頭):prompt。
下拉清單選項:adapter
setAdapter()設定選項
onItemClickListener()點選事件
用layot定義多個下拉清單選項方法:
values中建立list_data.xml檔案
<string-array>
<item >選項1</item>
</string-array>
然後在layout中的spinner設定android:entries="@array/list_data"
動态添加定義:
先layout中配置spinner的id:android:id="@+id/dyn_list"
配置 values中
<string-array name="dyn_list_info">
<item >選項2</item>
再activity中:
private Spinner list;
private ArrayAdapter <CharSequence> aa;
然後oncreate{}中添加:
this.list=(Spinner) super.findViewById(R.id.dyn_list);
this.list.setPrompt("請選擇");
this.aa=ArrayAdapter.createFromResource(this, R.array.dyn_list_info, android.R.layout.simple_spinner_item);
this.list.setAdapter(aa);
另外還可以通過 this.aa.setDropDownViewResource(android.R....)
來實作下拉表樣式修改完全利用程式設定下拉清單資料:
private List <CharSequence> al;
然後oncreate{}中添加:
this.al=new ArrayList<CharSequence>();
this.al.add(" 選1");
this.al.add(" 選2");
this.al.add(" 選3");
this.list.setPrompt("請選擇");
this.aa=ArrayAdapter.createFromResource(android.R.layout.simple_spinner_dropdown_item);
this.list.setAdapter(aa);
ImageView 圖檔控件
顯示圖檔的id:android:src=“@drawable/logo”
代碼添加:setImageResource(R.drawable.logo)
ImageButton圖檔按鈕
ImageView的子類
TimePicker時間選擇器
重要知識:
CurrentHour目前時間。可以在代碼裡用set get。get出來的是int。
setIs24HourView(true) 可以設定24小時制
DatePicker日期選擇器 ==============================================================================
布局管理器
4大布局管理器:LinearLayout,FrameLayout,RelativeLayout,TableLayoutLinearLayout
LinearLayout 線性布局管理器:
動态設定
<setOrientaton(HORIZONTAL/VERTICAL)addView() 增加控件
ViewGroup.LayoutParams布局參數類
構造時候傳入長寬
ViewGroup.LayoutParams lp=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)
FrameLayout 幀布局管理器
所有堆在左上角。不常用
TableLayout表格布局。最常用元件
基礎設定形式:
< TableLayout
>
<TableRow>
<TextView />
</TableRow>
</TableLayout>
TableLayout重要知識:
android:shrinkColumn="3" <- 設定第三列為自動伸縮列
android:collapseColumns="1,2,3" <-不顯示的列
android:background="" <- 定義背景圖檔
2用表格行列顯示資料
如
姓名 位址 電話
張三 北京 11111
<TextView
android:layout_column="0" <-所屬第幾列
android:text="顯示文字"
android:gravity="center_horizontal" <- 預設水準居中
android:padding="8px" <- pad邊大小
/>
<TextView android:layout_column="2"/>
3程式中依據資料動态顯示表格:
private String titleData[][] = new String[][] {
{ "姓名", "位址", "電話" },
{ "張山", "景德鎮", "111111" },
{ "李四", "南京", "2222"} }; // 定義要顯示的資料
TableLayout layout = new TableLayout(this); // 定義表格布局
TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT); // 定義布局管理器的參數
layout.setBackgroundResource(R.drawable.mldn_logo); // 定義背景圖檔
for (int x = 0; x < this.titleData.length; x++) { // 循環設定表格行
TableRow row = new TableRow(this); // 定義表格行
for (int y = 0; y < this.titleData[x].length; y++) {
TextView text = new TextView(this);
text.setText(this.titleData[x][y]); // 設定文本内容
row.addView(text, y); // 加入一個編号
}
layout.addView(row); // 向表格之中增加若幹個表格行
}
super.setContentView(layout, layoutParam); // 設定顯示
RelativeLayout 相對布局
緊貼于某控件右邊(平行)android:layout_toRightOf="@id/xxxx"
緊貼于某控件下邊(平行)android:layout_toBelowOf="@id/xxxx"
類似有left top
LayoutInflater在dialog界面顯示控件(定制對話框)
LayoutInflater li=LayoutInflater.from(Demo,this);//定義
View myView=factory.inflate(R.layout.login.null);//載入模闆
再将dialog的程式.setView(myView).create();
日期對話框框:
DatePickerDialog
有new DatePickerDialog.OnDateSetListener()事件類
時間對話框
TimePickerDialog
new TimePickerDialog.OnTimeSetListener()事件類
進度對話框
ProgressDialog
顯示風格:STYLE_HORIZONTAL,SYTLE_SPINNER(環形)
setMessage()設定資訊
onStart()啟動對話框
setProgressStyle()設定樣式
show()快捷顯示
incrementProgressBy()設定最大增長值
setProgress()設定目前進度
匿名内部類通路方法外類要加final。
SeekBar元件拖動條滑塊父類是progressBar
主要事件:
onSeekBarChange 進度改變
onStartTrackingTouch 正在拖動
getProgress()獲得目前進度
setMax(9)可規定滑動條的幅度。
獲得視窗屬性:
WindowManager.layoutParams param=super.getWindow().getAtrributes();
parm.screenBrightness 就是一個可get和set的螢幕亮度屬性
super.getWindow().setAtrributes(param) 設定回去。
TextView.sertMovementMethod()設定文本控件可以滾動。
RatingBar 評分元件
getNumStars()獲得打分次數
getRating()目前級别 getStepSize()
setIsIndicator()是否可以打分設定
setNumStars()星星個數
setOnRatingBarChangeListener
Toast元件小提示tips
setGravity()可以顯示偏移位置
可用addView()添加圖檔等元件
ImageSwitcher 圖檔切換元件
ViewFactory接口。要實作 makeView
Toast.makeText().show();建立并顯示文本資源,設定顯示時間
設定動畫:s
setInAnimation(AnimationUtils.loadAnimations
(this,android.R.anim.fade_in))
TextViewSwitcher文本切換元件
Gallery 畫廊元件
必須使用Adapter接口。如SpinnerAdapter,BaseAdapter,SimpleAdapter
GridView 網格視圖
AnalogClock,DigitalClock模态時鐘和數字時鐘
Chronometer計時器※
start()
setFormat
stop
setBase複位、
計時器監聽:setOnChronometerTick
Vibrator震動
v=(Vibrator)super.getAppliction().getSystemService
(Service.VIBRATOR_SERVICE)
Main.this.v.vibrtate(new long[]{1000,10,100,100},0);
TabHost 标簽類
menu菜單 OptionsMenu,ContextMenu,SubMenu
OptionsMenu的重寫方法:
onCreateOptionsMenu(menu)
{
mi=MenuInflater(this);
mi.Inflate(R.menu.new_menu,menu)
return true;
}
onOptionsItemSelected(MenuItem item){
swtich(item.getItemId())
case exit :
....
onOptionsMenuClosed
onPrepareOptionsMenu // 顯示菜單前
ContextMenu上下文菜單(長按)
registerForContextMenu(view);//綁定一個view的上下文菜單
AlertDialog彈出對話框
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setMessage("sdfsdf").setPositiveButton("是",監聽).setNegativeButton("否",監聽).create().show()h
或者setItems