【问题标题】:Change Framelayout top view in runtime在运行时更改 Framelayout 顶视图
【发布时间】:2015-02-18 09:53:27
【问题描述】:

我有一个带有两个孩子的 frameLayout:

 <FrameLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:onClick="start">

   <ImageView         
      android:id="@+id/iv1"
      android:layout_width="70dp"       
      android:layout_height="70dp"
      android:background="@drawable/snd1"
    />
    <ImageView 
      android:id="@+id/iv2"
      android:layout_width="70dp"
      android:layout_height="70dp"
      android:background="@drawable/snd2"
     />
  </FrameLayout>

在上面的代码中,iv2 位于 iv1 之上。我想在运行时将 iv1 放在 iv2 之上。 (使用动画) 我在使用动画方面没有问题,但是如何将 iv1 放在 iv2 之上,因为它在 xml 布局中定义在 iv2 后面?

【问题讨论】:

    标签: android animation android-framelayout


    【解决方案1】:

    您可以使用 removeView() 函数删除视图,然后使用此函数将其添加回 FrameLayout:

    public void addView (View child, int index)
    

    这是文档:

    http://developer.android.com/reference/android/view/ViewGroup.html#addView(android.view.View, int)

    将索引设置为子项的计数 - 1 以将其添加到末尾。然后它将是最顶层的视图。

    【讨论】:

    • tnx 回答,但如果我删除一个视图并使用新索引再次添加它,那么在删除和添加时它不会从布局中变得不可见吗?因为我必须在动画期间这样做!
    • 是的,它会变得不可见,但我猜它无论如何都不可见。 iv1 在 iv2 的背景中。因此,当您删除 iv1 时,用户不会注意到任何事情。当您将其添加回来时,请确保将其 alpha 设置为 0,使其不可见。然后,您可以在视图中从 alpha 0 淡入到 alpha 1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多