Android layout 在OnCreateView中膨胀视图时,它是否应该在创建后立即具有正确的大小?

Android layout 在OnCreateView中膨胀视图时,它是否应该在创建后立即具有正确的大小?,android-layout,android-fragments,xamarin.android,font-size,layout-inflater,Android Layout,Android Fragments,Xamarin.android,Font Size,Layout Inflater,我有一个Fragment类,用于Android.support.v4.view.ViewPager 在需要显示另一页时由寻呼机调用的OnCreateView中,我创建了一个标签,并希望动态地将该标签内的一些字体大小设置为标签高度的百分比: class LabelFragment:Android.Support.V4.App.Fragment { 创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态) { base.OnCreate(savedInstanceState); var

我有一个
Fragment
类,用于
Android.support.v4.view.ViewPager

在需要显示另一页时由寻呼机调用的
OnCreateView
中,我创建了一个标签,并希望动态地将该标签内的一些字体大小设置为标签高度的百分比:

class LabelFragment:Android.Support.V4.App.Fragment
{
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
base.OnCreate(savedInstanceState);
var v=充气机。充气(Resource.Layout.Label,container,false);
浮动大字体大小=v.高度/1.5f;
浮动介质字体大小=v.高度/5.0f;
浮动小字体大小=v.高度/10.0f;
//为v的子级设置字体大小
返回v;
}
}
当我编写此代码时,我的理解是,充气后,
v
将具有正确的
宽度
高度

实际上,这在模拟器和某些设备上有效,但在其他一些设备上,标签子元素消失了,因为它们分配了零字体大小,这意味着
v.Height
为零


这个代码有效吗?是否记录了充气返回的视图的尺寸是否正确?我是否应该从
容器
中获取高度,如果是这样,是否有文件证明它在与
ViewPager
一起使用时将不为空?

问题是视图尚未在
OnCreateView
方法中绘制。因此,
Height
很可能是一个意外值

好的,那么你能做些什么来获得视图的高度呢?使用
ViewTreeObserver
获取
PreDraw
事件,如:

v.ViewTreeObserver.PreDraw += (s, e) =>
{
    // do height calculations here
};
我还注意到您使用的是字体大小,请确保您没有使用像素高度,而是使用可缩放单位(sp)。这大概就是您首先设置字体大小的原因。

您好,您能看到这里我也有同样的问题吗。而且PreDraw对我也不起作用;)谢谢