2

開発したいシンプルなカードゲームには、button1、button2、button3の3つのボタンがあります。button1は、テーブル行に2つの画像ビューを作成し、画像を表示します。button2および/またはbutton3をクリックすると、レイアウトインフレータを介してテーブル行にimageviewが動的に追加されます。ゲームが終わったら、ユーザーにbutton1をクリックして、最初からやり直してもらいたいです。私はそれを行うことができますが、問題は、ボタン2とボタン3をクリックして以前に表示されたイメージビューも表示されることです。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

//ビューを追加

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 に答える