Android編程獲取組件尺寸大小的方法
本文實例講述了Android編程獲取組件尺寸大小的方法。分享給大家供大家參考,具體如下:
在oncreate()中利用view.getWidth()或是view.getHeiht()來獲取view的寬和高,看似沒有問題,其實他們?nèi)サ弥凳?,并不是你想要的結(jié)果?
這是為什么呢?
在調(diào)用oncreate()方法時,界面處于不可見狀態(tài),內(nèi)存加載組件還沒有繪制出來,你是無法獲取他的尺寸。
那如何在繪制組件之前能獲取到該組件的尺寸大小呢?
這里有三種方法,經(jīng)過驗證的:
方法一 :
//測量方法 int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); view.measure(width,height); int height=view.getMeasuredHeight(); int width=view.getMeasuredWidth();
方法二 :
//增加組件繪制之前的監(jiān)聽 ViewTreeObserver vto =view.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public ooleanonPreDraw() { int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); } });
方法三 :
//增加整體布局監(jiān)聽 ViewTreeObserver vto = view.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public voidonGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); } });
那么,在activity進入運行期時,組件的尺寸獲取方法就很簡單了,直接getWidth()和getHeight().
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android開發(fā)之WebView組件的使用解析
- android開發(fā)教程之view組件添加邊框示例
- Android組件間通信--深入理解Intent與IntentFilter
- Android應(yīng)用程序四大組件之使用AIDL如何實現(xiàn)跨進程調(diào)用Service
- android WebView組件使用總結(jié)
- android使用include調(diào)用內(nèi)部組件的方法
- Android四大組件之Service(服務(wù))實例詳解
- Android實現(xiàn)動態(tài)切換組件背景的方法
- Android開發(fā)之時間日期組件用法實例
- 深入理解Android組件間通信機制對面向?qū)ο筇匦缘挠绊懺斀?/a>
- Android開發(fā)四大組件之實現(xiàn)電話攔截和電話錄音
相關(guān)文章
Android miniTwitter登錄界面開發(fā)實例
這篇文章主要為大家詳細介紹了Android miniTwitter登錄界面開發(fā)實例,感興趣的小伙伴們可以參考一下2016-04-04flutter仿微信底部圖標(biāo)漸變功能的實現(xiàn)代碼
這篇文章主要介紹了flutter仿微信底部圖標(biāo)漸變功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04android TextView不用ScrollViewe也可以滾動的方法
這篇文章主要介紹了android TextView不用ScrollViewe也可以滾動的方法,很簡單實用的代碼,大家參考使用吧2013-11-11詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲
LeanCloud是一種簡單高效的數(shù)據(jù)和文件存儲服務(wù),本文主要介紹了利用LeanCloud來進行網(wǎng)絡(luò)數(shù)據(jù)的存儲的實現(xiàn)方法。具有很好的參考價值,需要的朋友一起來看下吧2016-12-12