2

在我想开发的一个简单的纸牌游戏中,我有三个按钮:button1、button2 和 button3。button1 在一个表格行中创建两个图像视图并显示图像。当 button2 和/或 button3 被点击时,它会通过布局充气器在 tablerow 上动态添加 imageview。游戏结束后,我希望用户单击 button1 并重新开始。我能够做到这一点,但问题是,以前通过单击 button2 和 button3 显示的图像视图也会显示。我希望在单击 button1 时将它们删除。如何在单击 button1 时删除它们?请帮我!

4

4 回答 4

7

就像您添加视图一样,您可以删除它们。只需调用removeViewAt(int index)removeView(View view)在父容器上删除您想要的视图。

或者,如果您预见到重用它们,您可以将它们的可见性设置为GONE. 然后,您可以将它们带回来,而无需再次膨胀它们。

如果您让充气器自动将充气的图像视图附加到父级,那么您必须跟踪添加的视图的位置。您可以getChildCount在膨胀之前在父级上使用以查找将要添加的下一个视图的索引。

于 2012-07-03T20:49:29.883 回答
2

你可以使用ViewGroup.removeView(View v);

像这样的东西:

tblRow.removeView(button2);
于 2012-07-03T20:50:05.887 回答
1

这是我如何添加然后在 5 秒后删除视图(在另一个上下文中)

  final LinearLayout linearLayout = context.getResources().getLayout(R.layout.activity_main)
  LayoutInflater inflater = LayoutInflater.from(linearLayout.getContext());
  final View details = inflater.inflate(R.layout.extra_details, linearLayout, false);
  linearLayout.addView(details);

  new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (linearLayout.findViewById(R.id.extra_details) != null){
                        linearLayout.removeView(details);
                    }
                }
            }, 5000);

同样的使用场景是在 onClickListener 的上下文中。在此处查看更多信息https://www.bignerdranch.com/blog/understanding-androids-layoutinflater-inflate/

于 2017-12-31T11:25:13.407 回答
1

//添加视图

LayoutInflater inflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
final View buttons = inflater.inflate(R.layout.activity, null );
addContentView(buttons, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

//移除视图

((ViewManager)buttons.getParent()).removeView(buttons);
于 2018-08-12T12:42:04.530 回答