我在片段中使用的布局大小始终为0.
我有一个包含子布局的片段,如下所示:
<RelativeLayout android:id="@+id/animationLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:background="@color/colorPrimary"
android:elevation="4dp">
此布局有一个子布局,其定义如下:
<TableLayout android:id="@+id/searchForm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="0"
android:background="@color/colorPrimary"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true">
[Some Child elements]
</TableLayout>
在父片段的onCreateView中,布局'searchForm'的高度始终为0.
即使我在
中测量尺寸searchForm.post(new Runnable() {
@Override
public void run() {
searchFormHeight = searchForm.getHeight(); //always 0
}
}
大小为0.
如何在onCreateView中获得此布局的大小?
答案 0 :(得分:0)
好的,我以前不知道我做错了什么,但最后跟着为我工作了:
searchForm.post(new Runnable() {
@Override
public void run() {
searchFormHeight = searchForm.getHeight();
}
});
答案 1 :(得分:0)
当整个视图膨胀时,您需要使用ViewTreeListener进行回调。如果我记得android等待整个视图立刻膨胀,那么即使一个视图被实例化,也可能不会膨胀返回高度为0.
searchForm.getViewTreeObserver()
.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw () {
searchFormHeight = searchForm.getHeight();
return true;
});
答案 2 :(得分:0)
实际上onCreateView()处理视图的创建,这就是为什么它返回0
尝试按下以获取高度,将函数覆盖为片段类
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
searchFormHeight = searchForm.getHeight();
}