android - 如何以编程方式引用 View ?

标签 android android-layout

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

部分代码如下:

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

最佳答案

更改您的代码以获取对动态创建的 View 的引用

第一个 decalre li_pop 在类级别

 LinearLayout li_pop;

创建时 li_pop 的第二个 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
                    }
                }
            });

关于android - 如何以编程方式引用 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003369/

相关文章:

android - 将 xml 用于第二个 Activity 的问题(R.id 问题)

android - 我有 edittext 填充问题

android - 解决android :gravity and android:layout_gravity之间的冲突

java - 覆盖 color.xml 文件中的颜色值

java - Android 中的 GridView 中未触发 OnItemClick 事件

android - Robolectric 未使用测试应用程序

java - 无法解析变量

android - 在 Gingerbread 上完美运行时,应用程序在 ICS 中的 Resume 上崩溃

java - 导出后,Eclipse 中出现错误

android - QtCreator android 不会部署