0

ハンドラーを持つLinearLayoutビューがありOnClick、OnClick イベントが発生したときに LinearLayout の後にプログラムでビューを追加したいと考えています。

public void onClick(View view) {
    LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout info = (LinearLayout) li.inflate(R.layout.infolayer, null);
    // view.addViewAfter(info)
}

info追加したいビューです。viewクリックが行われ、その後に追加したいビューですinfo

どうやってやるの?

4

3 に答える 3

2

現在の線形レイアウトの後にビューを追加したい場合は、最初に線形レイアウトが存在する親レイアウトの ID を取得します。

たとえば、相対レイアウト (id parentlayout を持つ) に ID "ll" のリニア レイアウトを設定し、ボタンをクリックすると、ライナー レイアウトの下にテキスト ビューを追加します。

public void onClick(View view) {

RelativeLayout rl=new RelativeLayout(this);

TextView tv=new TextView(this)
//set param value ur requirement
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW,R.id.ll);
}
于 2014-01-09T19:30:28.067 に答える
0

既知の量の線形レイアウトがあると仮定すると、それらを XML リソース内に配置して、「GONE」としてマークすることができます。イベントが発生したら、それらを表示します。それらがなくなったとマークされている場合、それらは画面スペースを占有するべきではありません。

于 2010-03-24T12:59:19.263 に答える
-1

コーディングを介して挿入でき、膨らませる必要はありません。コンストラクターを呼び出してコンテキストを渡すと、任意の型のビューを作成できます。ビューの構築時に、コンテキストへの参照をフィールドとしてビューに格納できます。このようにして、いつでもその場でビューを作成できます。

ビューを に追加するにはLinearLayout、 を呼び出すだけですaddView。その後、それを削除したい場合は、 を呼び出すだけremoveViewです。

しかし、onClickイベントはLinearLayoutオブジェクトの中にありますか? LinearLayoutメソッドに到達する前に、内のビューがイベントを消費する可能性があるため、これは問題になる可能性があります。それについては、この投稿を参照してください。

于 2010-11-14T03:03:20.040 に答える