手动布局活动视图的好时机?

时间:2011-12-02 13:00:31

标签: android

我有这个活动,我需要在运行时做一些布局(在这个特定的实例中我需要设置指标边界(ExpandableListView.setIndicatorBound),以便组指示符对齐到视图的右侧而不是默认左边。

我在Activity:onCreate

中有这段代码
int viewWidth = mListView.getWidth();
int groupIndicatorWidth = getResources().getDrawable(R.drawable.up).getMinimumWidth(); 
mListView.setIndicatorBounds(viewWidth - groupIndicatorWidth, viewWidth);
app.fetchItems(this);

可以理解的是,viewWidth在运行时变为0

我的问题是,当视图的子项被布局并且它们的维度有效时,我应该使用什么方法实现/重载?基本上在Windows上,我们通常将这些代码放在OnSize / OnResize中。

我找到了Activity:onPostCreateActivity:onPostResume,但我也在文档中发现了这一点 - “应用程序通常不会实现此方法;它旨在让系统类在应用程序代码运行后进行最终初始化。“

修改

发现此主题列出了几个解决方法: Android: Need to use onSizeChanged for View.getWidth/Height() in class extending Activity

1 个答案:

答案 0 :(得分:0)

最明显的方法是,当视图的大小发生变化时(在您的示例中为ListView),是扩展该视图并覆盖其onSizeChanged(int w, int h, int oldw, int oldh)方法。