RelativeLayout用到的一些重要的屬性:
第一類:屬性值為true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相對於父元素完全居中
android:layout_alignParentBottom 貼緊父元素的下邊緣
android:layout_alignParentLeft 貼緊父元素的左邊緣
android:layout_alignParentRight 貼緊父元素的右邊緣
android:layout_alignParentTop 貼緊父元素的上邊緣
android:layout_alignWithParentIfMissing 如果對應的兄弟元素找不到的話就以父元素做參照物
第二類:屬性值必須為id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左邊
android:layout_toRightOf 在某元素的右邊
android:layout_alignTop 本元素的上邊緣和某元素的的上邊緣對齊
android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊
android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊
android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊
第三類:屬性值為具體的像素值,如30dip,40px
android:layout_marginBottom 離某元素底邊緣的距離
android:layout_marginLeft 離某元素左邊緣的距離
android:layout_marginRight 離某元素右邊緣的距離
android:layout_marginTop 離某元素上邊緣的距離
EditText的android:hint
設置EditText為空時輸入框內的提示信息。
android:gravity
android:gravity屬性是對該view 內容的限定.比如一個button 上面的text. 你可以設置該text 在view的靠左,靠右等位置.以button為例,android:gravity="right"則button上面的文字靠右
android:layout_gravity
android:layout_gravity是用來設置該view相對與起父view 的位置.比如一個button 在linearlayout里,你想把該button放在靠左、靠右等位置就可以通過該屬性設置.以button為例,android:layout_gravity="right"則button靠右
android:layout_alignParentRight
使當前控件的右端和父控件的右端對齊。這里屬性值只能為true或false,默認false。
android:scaleType:
android:scaleType是控制圖片如何resized/moved來匹對ImageView的size。ImageView.ScaleType / android:scaleType值的意義區別:
CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示
CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬)
CENTER_INSIDE / centerInside 將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬
FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示
FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置
FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示
MATRIX / matrix 用矩陣來繪制,動態縮小放大圖片來顯示。
** 要注意一點,Drawable文件夾里面的圖片命名是不能大寫的。
1.Android RelativeLayout 屬性
// 相對於給定ID控件
android:layout_above 將該控件的底部置於給定ID的控件之上;
android:layout_below 將該控件的底部置於給定ID的控件之下;
android:layout_toLeftOf 將該控件的右邊緣與給定ID的控件左邊緣對齊;
android:layout_toRightOf 將該控件的左邊緣與給定ID的控件右邊緣對齊;
android:layout_alignBaseline 將該控件的baseline與給定ID的baseline對齊;
android:layout_alignTop 將該控件的頂部邊緣與給定ID的頂部邊緣對齊;
android:layout_alignBottom 將該控件的底部邊緣與給定ID的底部邊緣對齊;
android:layout_alignLeft 將該控件的左邊緣與給定ID的左邊緣對齊;
android:layout_alignRight 將該控件的右邊緣與給定ID的右邊緣對齊;
// 相對於父組件
android:layout_alignParentTop 如果為true,將該控件的頂部與其父控件的頂部對齊;
android:layout_alignParentBottom 如果為true,將該控件的底部與其父控件的底部對齊;
android:layout_alignParentLeft 如果為true,將該控件的左部與其父控件的左部對齊;
android:layout_alignParentRight 如果為true,將該控件的右部與其父控件的右部對齊;
// 居中
android:layout_centerHorizontal 如果為true,將該控件的置於水平居中;
android:layout_centerVertical 如果為true,將該控件的置於垂直居中;
android:layout_centerInParent 如果為true,將該控件的置於父控件的中央;
// 指定移動像素
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值;
example: android:layout_below = "@id/***" android:layout_alignBaseline = "@id/***"
android:layout_alignParentTop = true
android:layout_marginLeft = “10px” 、
2.一些常用的公共屬性介紹
1) layout_width -寬
fill_parent: 寬度和父元素相同
wrap_content: 寬度隨本身的內容所調整或者指定 px值來設置寬
2) layout_height - 高
fill_parent: 高度和父元素相同
wrap_content: 高度隨本身的內容所調整或者指定 px值來設置高
3) background -設置背景圖
4) padding -設置邊距 可以具體設置paddingBottompaddingLeftpaddingRightpaddingTop來設定不同的px值
5) id -該object的id號 @+id/id1 代表添加新的id名為id1 @id/id1 代表引用id1的控件
6) layout_weight -重要度 個人理解為顯示的優先級。默認為0(最高)數值越大優先級越低參考下面的Linear Layout例子。
要讓layout_weight生效需要父層或父父層的相應
layout_width/layout_height = "fill_parent"否則wrap_content 會壓縮到最小足夠空間
7) layout_gravity- Container組件的對齊方式 組件在layout里面的對齊方式。
8) gravity-文字在組件里的對齊方式 例如設置button里面的文字在button中居中顯示。
* 大多數屬性是可以調用對應的函數來動態改變狀態的請查看SDK Doc。
2. Linear Layout 線形布局
orientation -容器內元素的排列方式。
vertical: 子元素們垂直排列
horizontal: 子元素們水平排列。
在代碼里可通過setOrientation()進行動態改變
值分別為HORIZONTAL或者VERTICAL。
*在Linear Layout, 寬度/高度都是按着組件的次序逐個占用的所以當某個組件設置
"fill_parent"在沒有設置Layout_weight的情況下該組件會占用了余下的空間
那么在它后面的組件就會顯示不出來。
如下圖的EditText如果沒有設置
android:layout_weight="1",它下面的其他組件就看不見了
baselineAligned 一般情況下這個屬性默認為true代表在同一方向的組件都基於
第一個組件對齊。所以可以看到下圖的text1, button1, text2是在同一水平線的。
當不需要這效果時可以設置為false。
3.android常用控件
1,EditText
主要函數:setText/getText設置/獲取文本內容,setHint設置缺省顯示內容;
2,RadioGroup,RadioButton RadioButton的isChecked()判斷是否被選中 獲取選中RadioButon的ID:設置RadioGroup.setOnCheckedChangeListener方法
public onCheckedChanged(RadioGroup group,int checkedId)//checkedId是選中RadioButton的ID
3,CheckBox isChecked()判斷是否被選中 setOnCheckedChangeListener方法監視選中狀態改變情況
4,Spinner a,顯示數據
1),硬編碼加載 通過setAdapter方法設置類型為ArrayAdapter (Context context, int textViewResId, String []objects)
textViewResourceId:顯示內容的ViewID默認設置為R.layout.simple_spinner_item objects:顯示的內容
2),從資源文件中加載
ArrayAdapter.createFromResource (Context context, int textArrayResId, int textViewResId) //textArrayResId是資源ID 返回ArrayAdapter<CharSequence>
b,設置下拉列表的風格(可選) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
c,監聽選項選擇變更事件 setOnItemSelectedListener設置監聽去 Spinner.OnItemSelectedListener類須實現以下兩個方法
public void onItemSelected (AdapterView<?> parent, View view, int position, long id)//view 選中項實例,position選擇項在adapter中的位置 public void onNothingSelected(AdapterView<?> arg0)
d,設置選中項 Spinner.setSelection(position)//索引從0開始
d,獲取選中項 getSelectedItemPosition () getSelectedItem () //該值toString()則為選中內容的字符串 getSelectedItemId ()
getSelectedView ()
5,AutoCompleteTextView
1,setAdapter設置數據adapter
2,設置輸入多少個字符顯示提示AutoCompleteTextView.setThreshold(int threshold)
6,MultiAutoCompleteTextView (允許輸入多值,多值之間會自動地用指定的分隔符分開)
1,setAdapter設置數據adapter
2,setTokenizer設置提示Tokenizer缺省的為new MultiAutoCompleteTextView.CommaTokenizer()以逗號分隔
7,DatePicker,TimePicker
a,DatePicker
1),設置初始顯示日期init(int Year, int month, int day, new DatePicker.OnDateChangedListener(){ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){} })
2),獲取設置值 getYeah()/getMonth()/getDayOfMonth() b,TimePicker
1),設置setCurrentHour (Integer currentHour) /setCurrentMinuter (Integer currentHour)
2,setIs24HourView(Boolean)設置是否為24小時制顯示
3,監聽設置改變setOnTimeChangedListener
c,獲取系統當期時間和日期 Calendar.getInstance()返回Calendar Calendar.get (int field) ---field 可以為Calendar.YEAR/ Calendar.MONTH/ Calendar.DAY_OF_MONTH/ Calendar.HOUR_OF_DAY/ Calendar.MINUTE
8,ImageView/ImageButton 主要方法 setImageResource 設置顯示圖片 setAlpha 設置Alpha invalidate 強制更新
setScaleType( ScaleType st) 設置圖片顯示方式,st是一枚舉 setAdjustViewBounds 設置是否調整控件適應圖片大小 setBackgroundResource 設置背景
9,ImageSwitcher(顯示一系列的圖片,但當前只顯示一張圖片) 顯示數據
setFactory( ViewSwitcher.ViewFactory factory)設置要顯示的數據 ,ViewFactory接口須實現方法
public View makeView(){}負責提供當前顯示的視圖(ImageView),且View必須為新實例
方法 setImageResource設置當前顯示的圖片 getCurrentView()返回當前顯示的視圖
setInAnimation(Animation ani)設置視圖裝載入時的動畫效果,AnimationUtils.loadAnimation(Context context, int id)
獲取動畫效果android.R.anim.XX setOutAnimation(Animation ani)設置視圖裝載入時的動畫效果
10,Gallery(顯示一系列的圖片,提供拖動等特效) 顯示數據 setAdapter(SpinnerAdapter adapter)設置數據適配器.
數據適配器可以繼承自BaseAdapter,該類 public View getView(int position, View convertView, ViewGroup parent) 返回當前選擇的視圖(ImageView)
選項選中監聽setOnItemSelectedListener
11,GridView(表格顯示一系列圖片)
顯示數據 setAdapter(ListAdapter adapter)設置數據適配器.
數據適配器可以繼承自BaseAdapter,該類 public View getView(int position, View convertView, ViewGroup parent) 返回當前選擇的視圖(ImageView)
選項選中監聽setOnItemSelectedListener
getSelectedView()返回當前選中的視圖
12,ScrollView
13,ProgressBar setIndeterminate 設置進度條是否自動運轉
setProgressStyle 設置顯示風格.ProgressDialog.STYLE_HORIZONTAL/ProgressDialog.STYLE_SPINNER
setProgress 設置進度
setMax 設置最大值
getProgress()獲取當前進度
14,SeekBar 方法
setMax 設置最大值
getProgress()獲取當前值
setProgress 設置值
setIndeterminate 監聽器
setOnSeekBarChangeListener其下有三個方法
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) //數值變更,arg1新值,是否Touch
public void onStartTrackingTouch(SeekBar seekBar)//開始拖動
public void onStopTrackingTouch(SeekBar seekBar) //結束拖動
15,ListView
a,顯示數據setAdapter(ListAdapter adapter)
adapter可為new SimpleCursorAdapter/SimpleAdapter(Context context, int layout, Cursor c, String[] from, int[] to)
layout 用來顯示數據的模板.顯示一列可用android.R.layout.simple_list_item_1 兩列可用android.R.layout.simple_list_item_2
多列則需要自己實現xml視圖布局文件
c 數據(可用ArrayList構造數據)
from ': to 用來顯示對應列的空件id
b,動態增刪數據
adapter.notifyDataSetChanged()
d,設置背景色 setBackGroudRource