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)打印出來(lái)是0
那是因?yàn)樵趏nCreate方法的時(shí)候LinearLayout還并沒(méi)有繪制完成,所以獲取的高度均為0,
或者試著把這段代碼放到onResume()方法中去,依然是0。
實(shí)現(xiàn)方法
如果我們用獲取LinearLayout的寬高
可以通過(guò)定時(shí)器不斷的監(jiān)聽(tīng)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);
}
類(lèi)似,如果想在Activity啟動(dòng)后立即彈出PopupWindow,我們知道在Activity的onCreate()方法中直接寫(xiě)彈出PopupWindow方法會(huì)報(bào)錯(cuò),因?yàn)閍ctivity沒(méi)有完全啟動(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寬高問(wèn)題就解決了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開(kāi)發(fā)者們能有所幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
RecyclerView仿應(yīng)用列表實(shí)現(xiàn)網(wǎng)格布局
這篇文章主要為大家詳細(xì)介紹了RecyclerView仿應(yīng)用列表實(shí)現(xiàn)網(wǎng)格布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開(kāi)關(guān)頁(yè)面和判斷熱點(diǎn)是否打開(kāi)(親測(cè)可用)
跳轉(zhuǎn)手機(jī)熱點(diǎn)的頁(yè)面肯定是用intent,重點(diǎn)是action不知道是什么,網(wǎng)上最常見(jiàn)的就是Settings.ACTION_WIFI_SETTINGS 跳轉(zhuǎn)wifi設(shè)置頁(yè)面,本文介紹Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開(kāi)關(guān)頁(yè)面和判斷熱點(diǎn)是否打開(kāi),感興趣的朋友一起看看吧2023-08-08
android判斷設(shè)備是否有相機(jī)的實(shí)例代碼
下面小編就為大家?guī)?lái)一篇android判斷設(shè)備是否有相機(jī)的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Android中Root權(quán)限獲取的簡(jiǎn)單代碼
那么我們?cè)贏ndroid開(kāi)發(fā)中如何獲取Android的Root權(quán)限呢?下面是主要的簡(jiǎn)單代碼。2013-06-06
Kotlin Flow封裝類(lèi)SharedFlow StateFlow LiveData使用
這篇文章主要為大家介紹了Kotlin Flow封裝類(lèi)SharedFlow StateFlow LiveData使用對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Android總結(jié)之WebView與Javascript交互(互相調(diào)用)
本篇文章主要介紹了WebView與Javascript進(jìn)行數(shù)據(jù)交互,詳解的講訴了WebView與Javascript進(jìn)行數(shù)據(jù)交互的方法,有興趣的可以了解一下。2016-11-11
Flutter實(shí)現(xiàn)倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
OnSharedPreferenceChangeListener詳解及出現(xiàn)不觸發(fā)解決辦法
本文主要介紹 Android OnSharedPreferenceChangeListener的知識(shí),在Android應(yīng)用開(kāi)發(fā)過(guò)程中會(huì)遇到監(jiān)聽(tīng)器不觸發(fā)事件問(wèn)題,這里介紹了相應(yīng)的解決辦法2016-08-08

