顺序包括父布局中的各种View类

时间:2011-06-14 02:24:46

标签: android layout

我有一个主要布局,我想根据计时器和用户输入顺序显示/隐藏各种自定义布局。

在我的例子中,我想要以下时间表:

  1. 显示由MainStart类创建的初始布局。用户在准备好开始时会点击按钮。

  2. 用户点击后,我们将运行一个倒计时器,显示屏幕的倒计时。这是由MainCountdown完成的。

  3. 倒计时结束后,会显示MainLast。它有一个按钮,允许用户点击“再次?”当他们想重新开始时。

  4. 如果用户点击“再次?”然后转到第1步。

  5. 根据this question,我可能必须使用removeView()和addView()来实现我想要的目标。

    我向GitHub推送了我想要做的精简版:Hide and Show Layouts所以你可以看到所有内容,但问题似乎归结为myView之后仍然可见:

    myView = inflate(mContext, R.layout.main_start, _view_group);
    myView.setVisibility(View.GONE);
    

    direct link to code on GitHub

    direct link to related layout

    我可以对代码/布局进行一些小改动,使视图隐藏/显示我想要的方式吗?

    我完全做错了吗?

1 个答案:

答案 0 :(得分:1)

从你的1-4步骤来看,听起来像自定义视图可能有点矫枉过正,但如果出于某种原因,你需要它是一个自定义视图,它仍然可以很容易地完成...它可以可以使用ViewFlipper(或其他ViewAnimator)完成,也可以只有3个兄弟孩子,并根据需要设置每个孩子的可见性。鸟瞰图就像......

<ViewSwitcher
    android:layout_height="wrap_content"
    android:layout_width="match_parent">

    <Button
        android:id="@android:id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go" />

    <TextView
        android:id="@android:id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@android:id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Again" />

</ViewSwitcher>
  1. startCountdown():setDisplayedChild(1) - 这是TextView。同时开始倒计时:这可以使用Timer对象,也可以使用View#postDelayed()。

  2. onCountdownComplete():setDisplayedChild(2) - 这显示结束“再次?”按钮。

  3. 点击按钮2:setDisplayedChild(0)

  4. 倒计时可以使用postDelayed()和Runnable对象来减少计数器,或者可能更高效:使用sendEmptyMessageDelayed()。收到该处理程序消息后,递减内部计数器,并更新TextView。

    修改 倒计时的另一个选择是CountDownTimer - 类似的概念,但它有更多的“回调”感觉。您的时间间隔为1000,millisInFuture1000 * <numberOfSeconds>。在onTick()方法中,使用millisUntilFinished / 1000更新TextView。在onFinish()方法中,调用setDisplayedChild(2)。