Android基礎(chǔ)之獲取LinearLayout的寬高
前言
看到題目獲取LinearLayout寬高,或許大家想到的解決方法如下:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = (LinearLayout) findViewById(R.id.layInfo); Log.i("w", ll.getWidth()+"L"+ll.getHeight()); }
你會(huì)發(fā)現(xiàn)打印出來是0
那是因?yàn)樵趏nCreate方法的時(shí)候LinearLayout還并沒有繪制完成,所以獲取的高度均為0,
或者試著把這段代碼放到onResume()
方法中去,依然是0。
實(shí)現(xiàn)方法
如果我們用獲取LinearLayout的寬高
可以通過定時(shí)器不斷的監(jiān)聽LinearLayout的寬高,等繪制完成后,關(guān)閉定時(shí)器即可。
final Handler handler= new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == 1) { if(ll.getWidth()!=0) { Log.i("w", ll.getWidth()+"L"+ll.getHeight()); timer.cancel(); } } } }; timer = new Timer(); TimerTask task = new TimerTask(){ public void run() { Message message = new Message(); message.what = 1; myHandler.sendMessage(message); } }; timer.schedule(task,10,1000); }
類似,如果想在Activity啟動(dòng)后立即彈出PopupWindow,我們知道在Activity的onCreate()
方法中直接寫彈出PopupWindow
方法會(huì)報(bào)錯(cuò),因?yàn)閍ctivity沒有完全啟動(dòng)是不能彈出PopupWindow
。
我們可以嘗試用兩種方法實(shí)現(xiàn):
1、用onWindowFocusChanged
方法
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); showPopupWindow(); }
2、用Handler
和Runnable
,延時(shí)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mHandler.postDelayed(mRunnable, 1000); } private Runnable mRunnable = new Runnable() { public void run() { showPopupWindow(); } };
這樣獲取LinearLayout寬高問題就解決了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開發(fā)者們能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
RecyclerView仿應(yīng)用列表實(shí)現(xiàn)網(wǎng)格布局
這篇文章主要為大家詳細(xì)介紹了RecyclerView仿應(yīng)用列表實(shí)現(xiàn)網(wǎng)格布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開關(guān)頁面和判斷熱點(diǎn)是否打開(親測(cè)可用)
跳轉(zhuǎn)手機(jī)熱點(diǎn)的頁面肯定是用intent,重點(diǎn)是action不知道是什么,網(wǎng)上最常見的就是Settings.ACTION_WIFI_SETTINGS 跳轉(zhuǎn)wifi設(shè)置頁面,本文介紹Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開關(guān)頁面和判斷熱點(diǎn)是否打開,感興趣的朋友一起看看吧2023-08-08android判斷設(shè)備是否有相機(jī)的實(shí)例代碼
下面小編就為大家?guī)硪黄猘ndroid判斷設(shè)備是否有相機(jī)的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Android中Root權(quán)限獲取的簡(jiǎn)單代碼
那么我們?cè)贏ndroid開發(fā)中如何獲取Android的Root權(quán)限呢?下面是主要的簡(jiǎn)單代碼。2013-06-06Kotlin Flow封裝類SharedFlow StateFlow LiveData使用
這篇文章主要為大家介紹了Kotlin Flow封裝類SharedFlow StateFlow LiveData使用對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Android總結(jié)之WebView與Javascript交互(互相調(diào)用)
本篇文章主要介紹了WebView與Javascript進(jìn)行數(shù)據(jù)交互,詳解的講訴了WebView與Javascript進(jìn)行數(shù)據(jù)交互的方法,有興趣的可以了解一下。2016-11-11Flutter實(shí)現(xiàn)倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03OnSharedPreferenceChangeListener詳解及出現(xiàn)不觸發(fā)解決辦法
本文主要介紹 Android OnSharedPreferenceChangeListener的知識(shí),在Android應(yīng)用開發(fā)過程中會(huì)遇到監(jiān)聽器不觸發(fā)事件問題,這里介紹了相應(yīng)的解決辦法2016-08-08