我有一个继承自LinearLayout
的自定义控件,我想在知道这个自定义控件的大小后立即添加一个子控件。
执行此操作的正确方法是什么?
答案 0 :(得分:1)
以下代码正常运行:
yourView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
//yourView.getWidth()
yourView.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
希望这会有所帮助。
答案 1 :(得分:0)
您必须在自定义布局中覆盖 onFinishInflate()方法。这是在所有视图都被夸大时调用的回调。使用它并添加你的观点。
答案 2 :(得分:0)
这可能会有所帮助:
/**
* Great workaround to get view infos after it has been drawn
*/
mCustomView.post(new Runnable() {
@Override
public void run() {
//The code you want to run
}
});