android activity載入階段,動態取得元件寬高,並且重新設置
在activity載入階段oncreate,onstart,onresume中
若是直接想取得view的寬度高度之類的
會發現取得的是0或是-2
由於activity似乎沒有載入完成的事件可以用
只好透過遞迴的方式檢查
以下
宣告類別變數
private Handler hd;
private Runnable ra;
在code中透過遞迴檢查layout是否載入完成
//動態調整高度
//01.取得元件
final LinearLayout question_page_ll=(LinearLayout)findViewById(R.id.question_page_ll);
final LinearLayout question_page_ll_btn=(LinearLayout)findViewById(R.id.question_page_ll_btn);
final RelativeLayout question_page_rl=(RelativeLayout)findViewById(R.id.question_page_rl);
final ScrollView question_page_sv = (ScrollView)findViewById(R.id.question_page_sv);
hd=new Handler();
ra=new Runnable() {
@Override
public void run() {
//02.遞迴檢查元件的寬高是否已經有值(假如不是在activity載入階段,則不需要這樣做)
if (question_page_sv.getMeasuredWidth()==0) {
hd.postDelayed(ra, 200);
}
else{
//得到值後計算
int newH=question_page_rl.getMeasuredHeight()-question_page_ll_btn.getMeasuredHeight();
//設定之後重新塞入
question_page_sv.getLayoutParams().height=newH;
question_page_sv.setLayoutParams(question_page_sv.getLayoutParams());
}
}
};
hd.postDelayed(ra, 200);