我有一个问题,我似乎无法弄清楚该怎么做。 我是Android的新手,但我有使用Java的经验。
在onCreate(bundle),onPostCreate(bundle)或任何其他类似的方法中,我无法获得View的正确宽度。它返回0.我还为调试目的做了一个简单的按钮,该按钮返回正确的值。
如何在onCreate方法之后调用获取View宽度的方法? 如果那是不可能的,那么解决方法是什么?
提前致谢,
Gerralt
答案 0 :(得分:2)
问题是因为,您在开始活动时尝试找出宽度。
但是在这个位置上,您的视图的实际转换不会发生。 Android提供了一个特殊的回调来查找所有单个视图的宽度和高度。要访问它,您必须覆盖onWindowFoucsChanged()
方法。这是一个样本,
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
System.out.println("...Height..."+textview.getMeasuredWidth());
}
此行textview.getMeasuredWidth()
可帮助您在运行时查找textView的实际宽度。同样,您可以使用此方法找到任何视图的宽度和高度。
答案 1 :(得分:0)
正如我想的那样,你处于onCreate(Bundle)方法:
public void onCreate(Bundle xxx) {
super(xxx);
// init some stuff here
setContentView(R.layout.my_layout);
// from THIS point you can get sizes of Views
}
对不起,如果我错了,但在我的项目上它有效。好吧,我不得不说我经常使用 自定义视图和使用大小不在我的活动代码中,而是在视图代码中。
答案 2 :(得分:0)
这是onWindowFocusChanged(),如下所示:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus && llfullscreen!=null){
int layoutHeight = llfullscreen.getHeight();
ViewGroup.LayoutParams params = lv.getLayoutParams();
params.height = lv/2; //Set to half the screens size
this.lv.setLayoutParams(params);
this.lv.invalidate();
}
}