2

レイアウトを作成しました。すべてプログラムで行われます。これで、クリックしたときにビューの VISIBILITY を変更するように設定されたボタンができました。率直に言って、ビューを参照する方法がわかりません。

コードの一部を次に示します。

    //my button to show pop-up
    Button btn_showPop = new Button(this);
    btn_showPop.setText("Pop-up");
    btn_showPop.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    btn_showPop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            hsv.post(new Runnable() {

                @Override
                public void run() {
                    if (Menu_Displayed) {
                        //pop-up
                        li_pop.setVisibility(View.VISIBLE); //how do I reference li_pop
                    } else {
                        //do nothing
                    }
                }
            });
        }
    });

    // pop-up:
    final LinearLayout li_pop = new LinearLayout(this);
    li_pop.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));
    li_pop.setOrientation(1);// 1 is vertical
    li_pop.setBackgroundColor(Color.LTGRAY);
    li_pop.setVisibility(View.GONE);
    li_pop.setClickable(true);
4

2 に答える 2

1

動的に作成されたビューへの参照を取得するようにコードを変更します

最初decalre li_pop はクラスレベル

 LinearLayout li_pop;

li_pop作成時の2 番目のセット ID :

li_pop = new LinearLayout(this);
li_pop.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.FILL_PARENT));

 li_pop.setId(599980); // set LinearLayout id here

li_pop ボタンのクリック時に LinearLayout を参照できるようになりました。

@Override
        public void onClick(View v) {
            hsv.post(new Runnable() {

                @Override
                public void run() {
                    if (Menu_Displayed) {
                        //pop-up
                        li_pop.setVisibility(View.VISIBLE); 
                      //OR
                 LinearLayout li_popnew=(LinearLayout)findViewById(599980);
                    li_popnew.setVisibility(View.VISIBLE);


                    } else {
                        //do nothing
                    }
                }
            });
于 2012-12-22T13:58:14.267 に答える
0

行を移動する

final LinearLayout li_pop = new LinearLayout(this);

参考前に。

于 2012-12-22T13:59:08.120 に答える