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