2

我已经创建了一个布局。全部以编程方式完成。现在我有一个按钮,该按钮设置为在单击时更改视图的可见性。坦率地说,我不知道如何引用该视图。

以下是部分代码:

    //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;

创建时的第二组 id 为li_pop

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 回答