Android基礎之獲取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()); }
你會發(fā)現打印出來是0
那是因為在onCreate方法的時候LinearLayout還并沒有繪制完成,所以獲取的高度均為0,
或者試著把這段代碼放到onResume()
方法中去,依然是0。
實現方法
如果我們用獲取LinearLayout的寬高
可以通過定時器不斷的監(jiān)聽LinearLayout的寬高,等繪制完成后,關閉定時器即可。
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啟動后立即彈出PopupWindow,我們知道在Activity的onCreate()
方法中直接寫彈出PopupWindow
方法會報錯,因為activity沒有完全啟動是不能彈出PopupWindow
。
我們可以嘗試用兩種方法實現:
1、用onWindowFocusChanged
方法
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); showPopupWindow(); }
2、用Handler
和Runnable
,延時
@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寬高問題就解決了。
總結
以上就是這篇文章的全部內容了,希望本文的內容對各位Android開發(fā)者們能有所幫助,如果有疑問大家可以留言交流。
相關文章
Android?kotlin?跳轉手機熱點開關頁面和判斷熱點是否打開(親測可用)
跳轉手機熱點的頁面肯定是用intent,重點是action不知道是什么,網上最常見的就是Settings.ACTION_WIFI_SETTINGS 跳轉wifi設置頁面,本文介紹Android?kotlin?跳轉手機熱點開關頁面和判斷熱點是否打開,感興趣的朋友一起看看吧2023-08-08Kotlin Flow封裝類SharedFlow StateFlow LiveData使用
這篇文章主要為大家介紹了Kotlin Flow封裝類SharedFlow StateFlow LiveData使用對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Android總結之WebView與Javascript交互(互相調用)
本篇文章主要介紹了WebView與Javascript進行數據交互,詳解的講訴了WebView與Javascript進行數據交互的方法,有興趣的可以了解一下。2016-11-11OnSharedPreferenceChangeListener詳解及出現不觸發(fā)解決辦法
本文主要介紹 Android OnSharedPreferenceChangeListener的知識,在Android應用開發(fā)過程中會遇到監(jiān)聽器不觸發(fā)事件問題,這里介紹了相應的解決辦法2016-08-08