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-08
Kotlin Flow封裝類SharedFlow StateFlow LiveData使用
這篇文章主要為大家介紹了Kotlin Flow封裝類SharedFlow StateFlow LiveData使用對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
Android總結之WebView與Javascript交互(互相調用)
本篇文章主要介紹了WebView與Javascript進行數據交互,詳解的講訴了WebView與Javascript進行數據交互的方法,有興趣的可以了解一下。2016-11-11
OnSharedPreferenceChangeListener詳解及出現不觸發(fā)解決辦法
本文主要介紹 Android OnSharedPreferenceChangeListener的知識,在Android應用開發(fā)過程中會遇到監(jiān)聽器不觸發(fā)事件問題,這里介紹了相應的解決辦法2016-08-08

