布局技巧與列表控件

布局技巧與列表控件


五大布局


FrameLayout(框架布局)逆屡、LinearLayout(線性布局)誉察、RelativeLayout(相對(duì)布局)与涡、TableLayout(表格布局)、AbsoluteLayout(絕對(duì)布局)。


視圖的創(chuàng)建


在Android系統(tǒng)中驼卖,何的可視化控件都是從android.view.View繼承的氨肌。開(kāi)發(fā)人員可以使用兩種方法來(lái)創(chuàng)建視圖。

第一種:是使用XML方式來(lái)配置View的相關(guān)屬性酌畜,然后裝載這些View

第二種:是完全使用java代碼來(lái)創(chuàng)建View


長(zhǎng)度單位


px:表示屏幕實(shí)際的象素怎囚。

dp(dip):是屏幕的物理尺寸。大小為1英寸的1/72桥胞。

sp(與刻度無(wú)關(guān)的像素):與dp類似恳守,但是可以根據(jù)用戶的字體大小首選項(xiàng)進(jìn)行縮放。

設(shè)置表示長(zhǎng)度贩虾、高度等屬性時(shí)可以使用dp或sp催烘。但如果設(shè)置字體,需要使用sp缎罢。

dp是與密度無(wú)關(guān)伊群,sp除了與密度無(wú)關(guān)外,還與scale無(wú)關(guān)

如果使用dp和sp屁使,系統(tǒng)會(huì)根據(jù)屏幕密度的變化自動(dòng)進(jìn)行轉(zhuǎn)換在岂。


布局中常用屬性


android:gravity與 android:layout_gravity的區(qū)別

android:layout_gravity是指定本元素相對(duì)它的父元素的對(duì)齊方式奔则。比如一個(gè)button 在linearlayout里蛮寂,你想把該button放在linearlayout里靠左、靠右等位置就可以通過(guò)該屬性設(shè)置易茬。

android:gravity是指定本元素的子元素相對(duì)它的對(duì)齊方式酬蹋。屬性是對(duì)該view中內(nèi)容的限定.比如一個(gè)button 上面的text. 你可以設(shè)置該text 相對(duì)于view的靠左,靠右等位置抽莱。android:gravity="top"(buttom范抓、left、right食铐、center_vertical匕垫、fill_vertical、center_horizontal虐呻、fill_horizontal象泵、center、fill斟叼、clip_vertical偶惠、clip_horizontal)控制布局中控件的對(duì)齊方式。如果是沒(méi)有子控件的控件設(shè)置此屬性朗涩,表示其內(nèi)容的對(duì)齊方式忽孽,比如說(shuō)TextView里面文字的對(duì)齊方式;若是有子控件的控件設(shè)置此屬性,則表示其子控件的對(duì)齊方式兄一,如果需要設(shè)置多個(gè)屬性值厘线,用“|”進(jìn)行組合

Relativelayout中的相對(duì)位置屬性

第一類 : 屬性值為 true 或 false

android:layout_centerVertical?垂直居中

android:layout_centerInparent?相對(duì)于父元素完全居中

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?本元素的上邊緣和某元素的的上邊緣對(duì)齊

android:layout_alignLeft?本元素的左邊緣和某元素的的左邊緣對(duì)齊

android:layout_alignBottom?本元素的下邊緣和某元素的的下邊緣對(duì)齊

android:layout_alignRight?本元素的右邊緣和某元素的的右邊緣對(duì)齊

第三類:屬性值為具體的像素值,如 30dip 瘾腰, 40px

android:layout_marginBottom?離某元素底邊緣的距離

android:layout_marginLeft?離某元素左邊緣的距離

android:layout_marginRight?離某元素右邊緣的距離

android:layout_marginTop?離某元素上邊緣的距離?


無(wú)比重要的ListView


1.ListVeiw:用來(lái)展示列表的View皆的。

2.適配器:用來(lái)把數(shù)據(jù)映射到ListView上的中介。

3.?dāng)?shù)據(jù):?具體的將被映射的字符串蹋盆,圖片费薄,或者基本組件。

根據(jù)列表的適配器類型栖雾,列表分為三種楞抡,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最為簡(jiǎn)單析藕,只能展示一行字召廷。SimpleAdapter有最好的擴(kuò)充性,可以自定義出各種效果账胧。 SimpleCursorAdapter可以認(rèn)為是SimpleAdapter對(duì)數(shù)據(jù)庫(kù)的簡(jiǎn)單結(jié)合竞慢,可以方面的把數(shù)據(jù)庫(kù)的內(nèi)容以列表的形式展示出來(lái)。

ArrayAdapter的 構(gòu)造需要三個(gè)參數(shù)治泥,依次為上下文,布局文件筹煮,數(shù)據(jù)源。同時(shí) 用setAdapter()完成適配的最后工作居夹。


ListView優(yōu)化


復(fù)用

防止convertView多次加載:

if(converView==null){

converView = mLayoutInflater.inflate(R.layout.xxx.xml,null);

重寫(xiě)ViewHolder

每次在getVIew的時(shí)候败潦,都需要重新的findViewById,重新找到控件准脂,然后進(jìn)行控件的賦值以及事件相應(yīng)設(shè)置劫扒。這樣其實(shí)在做重復(fù)的事情,因?yàn)榈膅eiview中狸膏,其實(shí)包含有這些控件沟饥,而且這些控件的id還都是一樣的,也就是其實(shí)只要在view中findViewById一次湾戳,后面無(wú)需要每次都要findViewById了贤旷。

寫(xiě)發(fā)的特點(diǎn),通常有一個(gè)內(nèi)部類classViewHolder,這個(gè)ViewHolder,用來(lái)標(biāo)識(shí)view中一些控件院塞,方便進(jìn)行一些事件相應(yīng)操作的設(shè)置遮晚,比如onClick等等,這樣可以不用每次都要findViewById了拦止,減少了性能的消耗县遣。同時(shí)重用了convertView糜颠,很大程度上的減少了內(nèi)存的消耗。


ListView常用屬性萧求、方法


屬性

Android:listSelector="@android:color/transparent"

屬性說(shuō)明:當(dāng)item被點(diǎn)擊后其兴,改變item的背景顏色(取值范圍包括圖片),上面設(shè)置的是透明的夸政,代表取消android:listSelector的效果元旬,。

android:scrollingCache="false"

android:cacheColorHint="#00000000"

屬性說(shuō)明:當(dāng)列表數(shù)據(jù)太多拖動(dòng)listView時(shí)守问,會(huì)發(fā)現(xiàn)背景變黑匀归,這是因?yàn)閘istView自帶的緩存導(dǎo)致,設(shè)置上面的任意一個(gè)屬性耗帕,即可避免這種情況

android:fadingEdge="none"

屬性說(shuō)明:滾動(dòng)listview時(shí)穆端,上邊和下邊有黑色的陰影,當(dāng)值為none時(shí)代表去掉陰影

android:divider="@drawable/list_diriver_bg"

屬性說(shuō)明:listview item之間的分割線設(shè)置(可以是圖片仿便,可以是顏色)体啰,當(dāng)值為@null 時(shí)代表沒(méi)有分割線

android:dividerHeight="3dp"

屬性說(shuō)明:listview item之間的分割線高度

android:fastScrollEnabled="true"

屬性說(shuō)明:當(dāng)listview數(shù)據(jù)太多時(shí),開(kāi)啟快速滑動(dòng)嗽仪,true代表開(kāi)啟

方法

addHeaderView

addFooterView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荒勇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子闻坚,更是在濱河造成了極大的恐慌沽翔,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲤氢,死亡現(xiàn)場(chǎng)離奇詭異搀擂,居然都是意外死亡西潘,警方通過(guò)查閱死者的電腦和手機(jī)卷玉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喷市,“玉大人相种,你說(shuō)我怎么就攤上這事∑沸眨” “怎么了寝并?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腹备。 經(jīng)常有香客問(wèn)我衬潦,道長(zhǎng),這世上最難降的妖魔是什么植酥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任镀岛,我火速辦了婚禮弦牡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漂羊。我一直安慰自己驾锰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布走越。 她就那樣靜靜地躺著椭豫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旨指。 梳的紋絲不亂的頭發(fā)上赏酥,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音谆构,去河邊找鬼今缚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛低淡,可吹牛的內(nèi)容都是我干的姓言。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蔗蹋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼何荚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起猪杭,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤餐塘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后皂吮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體戒傻,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年蜂筹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了需纳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艺挪,死狀恐怖不翩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情麻裳,我是刑警寧澤口蝠,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站津坑,受9級(jí)特大地震影響妙蔗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疆瑰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一眉反、第九天 我趴在偏房一處隱蔽的房頂上張望狞谱。 院中可真熱鬧,春花似錦禁漓、人聲如沸跟衅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伶跷。三九已至,卻和暖如春秘狞,著一層夾襖步出監(jiān)牢的瞬間叭莫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工烁试, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雇初,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓减响,卻偏偏與公主長(zhǎng)得像靖诗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子支示,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容