在按钮单击时显示/隐藏 ImageView

Posted

技术标签:

【中文标题】在按钮单击时显示/隐藏 ImageView【英文标题】:Show/Hide ImageView on Button click 【发布时间】:2012-11-11 23:25:12 【问题描述】:

我有一个完全在 java 中创建的 RelativeLayout,而不是使用 xml 布局。 如果我的屏幕左侧有几个按钮。我想单击一个按钮并在按钮旁边显示我的 res/drawable 中的默认图像,并使其在第二次单击时再次消失。 我尝试的是切换可见性,但我的 onClick() 引发了致命异常,NullPointer 异常。

到目前为止,这是我的代码。当我手动设置 picview.setVisibility(View.INVISIBLE); 时,硬编码图像显示正确。我在 onClick() 中做错了什么?

    private ImageView picview;

        //*snip* loads of other code

    //Show Image Button
    ImageButton show_pic = new ImageButton(this);
    show_pic.setBackgroundColor(Color.WHITE);
    show_pic.setOnClickListener(new OnClickListener()
    

        @Override
        public void onClick(View v) 
            if(picview.getVisibility() == View.INVISIBLE)
             
             picview.setVisibility(View.VISIBLE);
              
            else if (picview.getVisibility() == View.VISIBLE)
             
             picview.setVisibility(View.INVISIBLE);
                       
            

    );

    params = new RelativeLayout.LayoutParams(40, 40);
    params.topMargin = 10;
    params.leftMargin = 10;
    params.addRule(RelativeLayout.BELOW, button2_id);
    rl.addView(show_pic, params);

    //Imageview loaded from drawable
    ImageView picview = new ImageView(this);
    params = new RelativeLayout.LayoutParams(200, 400);
    params.topMargin = 0;
    params.leftMargin = 30;
    params.addRule(RelativeLayout.RIGHT_OF, button2_id);
    picview.setImageResource(R.drawable.my_image);
    picview.setVisibility(View.INVISIBLE);
    rl.addView(picview, params);

    this.setContentView(rl);

【问题讨论】:

【参考方案1】:

您不小心创建了picview 的两个副本。缩短这一行:

ImageView picview = new ImageView(this);

收件人:

picview = new ImageView(this);

(您的字段变量 private ImageView picview; 从未更改为 null,因此当您单击 Button 时,您会看到 NullPointerException...)

【讨论】:

【参考方案2】:

改变 show_pic.setOnClickListener(new OnClickListener() 到

show_pic.setOnClickListener(new View.OnClickListener()

【讨论】:

以上是关于在按钮单击时显示/隐藏 ImageView的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 TabBar 并在按钮单击时显示 NavigationController 工具栏

如果为空选择选项,则单击按钮时显示模式引导

如何在按下按钮的同时选择两个下拉选项时显示隐藏div

在PHP文件中实现javascript时显示/隐藏功能不起作用[关闭]

StreamBuilder snapshot.hasError 在键盘显示/隐藏颤动时显示多次

引导工具提示在点击时显示,但在鼠标移出时隐藏