在我想开发的一个简单的纸牌游戏中,我有三个按钮:button1、button2 和 button3。button1 在一个表格行中创建两个图像视图并显示图像。当 button2 和/或 button3 被点击时,它会通过布局充气器在 tablerow 上动态添加 imageview。游戏结束后,我希望用户单击 button1 并重新开始。我能够做到这一点,但问题是,以前通过单击 button2 和 button3 显示的图像视图也会显示。我希望在单击 button1 时将它们删除。如何在单击 button1 时删除它们?请帮我!
问问题
10746 次
4 回答
7
就像您添加视图一样,您可以删除它们。只需调用removeViewAt(int index)
或removeView(View view)
在父容器上删除您想要的视图。
或者,如果您预见到重用它们,您可以将它们的可见性设置为GONE
. 然后,您可以将它们带回来,而无需再次膨胀它们。
如果您让充气器自动将充气的图像视图附加到父级,那么您必须跟踪添加的视图的位置。您可以getChildCount
在膨胀之前在父级上使用以查找将要添加的下一个视图的索引。
于 2012-07-03T20:49:29.883 回答
2
于 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 回答