Android布局属性详解之RelativeLayout
?
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 ?
轉載于:https://www.cnblogs.com/zhangxin1989/archive/2013/03/17/2964832.html
總結
以上是生活随笔為你收集整理的Android布局属性详解之RelativeLayout的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到狗咬蛇什么预兆
- 下一篇: (转)[Android分享] Andro