我有一个带有公共函数的自定义视图,它将控件添加为视图的子项,我想从我的活动中调用它。问题是我需要知道函数中视图的大小才能放置控件。我无法覆盖onMeasure来获取度量,因为我的视图继承自另一个自定义视图,其中此函数是最终的。我尝试重写measureChildren,但是它被调用得太晚了(甚至在放置视图的活动的onResume之后)。在活动调用视图中的函数之前,我该怎么做才能获得大小?
答案 0 :(得分:0)
如果您想要显示尺寸(以像素为单位),可以使用getSize:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
答案 1 :(得分:0)
一种可能性是在活动中测量您的视图,然后为视图的内部方法设置视图的属性。
使用全局布局侦听器一直很适合我。它具有能够在布局改变时重新测量事物的优点,例如,如果某些内容设置为View.GONE或添加/删除子视图。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// inflate your main layout here (use RelativeLayout or whatever your root ViewGroup type is
LinearLayout mainLayout = (LinearLayout ) this.getLayoutInflater().inflate(R.layout.main, null);
// set a global layout listener which will be called when the layout pass is completed and the view is drawn
mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
// at this point, the UI is fully displayed
}
}
);
setContentView(mainLayout);
http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html