Android:如何在ui完全加载后执行操作

时间:2017-03-24 07:55:14

标签: android android-fragments

我有一个活动,它使用垂直ScrollView

来组合片段

当实例化该片段时,它会检索一个整数,该整数显示它应该滚动到的位置

这是在需要时使用的参数

在onCreateView方法中,此片段计算它应显示的子片段数,并使用事务将它们添加到其内容视图中,片段的布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:id="@+id/list.scroll"
        android:paddingStart="@dimen/question_side_margin"
        android:paddingEnd="@dimen/question_side_margin"
        android:layout_marginTop="@dimen/margin_medium"
        android:layout_marginBottom="@dimen/margin_medium"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="11">
        <LinearLayout
            android:layout_width="match_parent"
             android:layout_height="match_parent"
            android:orientation="vertical"
            android:id="@+id/list.content" />
    </ScrollView>

</LinearLayout>

这可以正常使用

我有这个代码来计算scrollview应该去哪里

int y_coord;  
for (int idx = 0; idx < position; idx++) {
    y_coord += _children[idx].getHeight();
}

问题是我已经测试了大多数片段的方法,而且没有一个孩子的格子具有实际高度,我到目前为止检查了以下方法:

  1. OnResume
  2. OnStart
  3. OnCreate
  4. OnActivityCreated
  5. OnAttach
  6. OnCreateView
  7. 在片段的事务中是否有一些方法会在视图完全呈现时触发?

    提前感谢您提供的任何帮助

    编辑:作为旁注,我使用的是普通片段,不支持,所以我无法访问OnCreateAnimation

1 个答案:

答案 0 :(得分:0)

您可以尝试覆盖onViewCreated方法,也可以使用全局布局侦听器。全局布局监听器基本上在您附加到的布局以某种方式更改时为您提供回调。我使用它时,我需要在完全充气并且已经计算出尺寸之后挂钩到视图中。

rootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        //Check here
        rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
     }
});

完成后删除它非常重要。否则你会得到很多回调。