自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android視圖大小測(cè)量案例研究

移動(dòng)開發(fā) Android
最近我的同事遇到了一個(gè)很有趣的問題。下面這個(gè)非常簡(jiǎn)單的布局會(huì)向我們展示一些關(guān)于Android測(cè)量系統(tǒng)的有趣發(fā)現(xiàn)。

最近我的同事遇到了一個(gè)很有趣的問題。下面這個(gè)非常簡(jiǎn)單的布局會(huì)向我們展示一些關(guān)于Android測(cè)量系統(tǒng)的有趣發(fā)現(xiàn)。

  1. <FrameLayout 
  2.     android:layout_width="wrap_content" 
  3.     android:layout_height="wrap_content"
  4.   
  5.     <ImageView 
  6.         android:layout_width="match_parent" 
  7.         android:layout_height="match_parent" 
  8.         android:background="#0F0" /> 
  9.   
  10.     <TextView 
  11.         android:layout_width="wrap_content" 
  12.         android:layout_height="wrap_content" 
  13.         android:text="This is some text." /> 
  14. </FrameLayout> 

預(yù)期的運(yùn)行結(jié)果,應(yīng)該顯示帶顏色背景的文本。但實(shí)際上,你根本就看不到背景ImageView:

qURBGu9

問題的根源就在于測(cè)量。因?yàn)槲覀兪褂昧祟伾珌泶媪藞D片,所以ImageView很自然地認(rèn)為它的寬和高都是零。Colors(或者ColorDrawables)并沒有像圖片那樣具有實(shí)質(zhì)意義上的大小,而ImageView不會(huì)大于它的背景或者圖片源的大小。

有意思的是,我們可以想出很多方法來解決這個(gè)問題。每個(gè)解決方法都揭示了測(cè)量系統(tǒng)的某個(gè)新的方面。從直觀的角度依次了解:

  • 將父布局FrameLayout設(shè)置為match_parent。這樣,ImageView就可以知道具體的大小,以此充滿父視圖。
  • 使用View代替ImageView。View會(huì)擴(kuò)張并填充空間,而ImageView不會(huì)。
  • 使用RelativeLayout代替FrameLayout。相對(duì)布局在測(cè)量子視圖大小時(shí),會(huì)采用不同的方式。
  • 為TextView寬或高設(shè)置為match_parent。這是個(gè)很讓人困惑的方法。它之所以有效,是因?yàn)槿绻鸉rameLayout有一個(gè)或多個(gè)子視圖使用了match_parent,會(huì)再做一次測(cè)量。

理解而不是簡(jiǎn)單地解決這個(gè)問題,需要反復(fù)閱讀FrameLayout.onMeasure()和ImageView.onMeasure()代碼。面對(duì)這樣的問題,Android是開源項(xiàng)目這一事實(shí)讓我感到非常高興。

這個(gè)問題的核心在于,僅僅展示顏色不應(yīng)該使用ImageView,用一個(gè)帶背景的View會(huì)更加可靠。

很顯然,上面的布局沒有什么實(shí)質(zhì)意義,大家一般都會(huì)給TextView設(shè)置背景。不過,這是一種說明問題的簡(jiǎn)單方式。

原文鏈接: danlew

譯文鏈接: http://blog.jobbole.com/68745/

責(zé)任編輯:閆佳明 來源: blog.jobbole
相關(guān)推薦

2009-08-28 17:51:40

iPhone多視圖開發(fā)

2017-05-08 17:40:23

Oracle視圖優(yōu)化案例分析

2014-08-05 09:28:39

軟件案例

2023-11-03 18:03:54

Web應(yīng)用Python

2011-08-15 18:02:32

iPhone開發(fā)表視圖

2009-11-23 20:32:11

ibmdwSOA

2012-12-18 09:59:07

2010-06-21 14:33:34

風(fēng)險(xiǎn)評(píng)估安全審計(jì)

2022-11-09 11:50:21

2014-09-24 10:25:06

軟件

2009-10-12 15:18:05

2020-07-17 15:06:27

海比研究SaaS

2012-08-01 09:56:34

虛擬化

2020-12-04 06:06:33

微軟 AI 遠(yuǎn)程醫(yī)療

2015-09-08 09:20:49

案例研究混合云云部署

2011-10-28 09:21:05

數(shù)據(jù)中心市電直供PUE

2013-08-06 13:45:29

Android性能個(gè)案

2023-07-18 16:01:51

布線結(jié)構(gòu)化布線

2021-08-16 14:04:25

醫(yī)療物聯(lián)網(wǎng)IOT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)