【问题标题】:how to validate view visibility on button click listener如何验证按钮单击侦听器上的视图可见性
【发布时间】:2016-08-21 08:38:33
【问题描述】:

我正在使用此代码进行验证,只有隐形视图有效。

mute.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mute = (ImageButton) findViewById(R.id.mute);
        if (mute.getVisibility() != View.INVISIBLE) {
            power.setVisibility(View.INVISIBLE);
        } else {
            power.setVisibility(View.GONE);
        }
    }
});

【问题讨论】:

  • 你是否知道View.VISIBLE在android中有什么东西?
  • GONE 和 INVISIBLE 在某种意义上都意味着不可见,我猜你的意思是 VISIBLE
  • 为什么要检查mute 的可见性?它的可见性可能保持不变,因此您不会更改 onClickListener 中的任何内容。

标签: android onclick onclicklistener visibility invisible


【解决方案1】:

使用它可以工作.....在类内但在方法外创建布尔变量作为全局变量。

 boolean flag=true;

并添加这个点击的方法。

  @Override
            public void onClick(View v) {


if (flag){
            power.setVisibility(View.GONE);
            flag=false;
        }
        else {
            flag=true;
           power.setVisibility(View.VISIBLE);}

    }


        });

静音总是可见的,因为你以强大的力量执行可见性,结果是一样的。

享受编码......

【讨论】:

  • 我是这样检查的,但它只执行不可见性,但我希望在同一个按钮单击时两者都需要另一个条件语句吗?
  • 还要检查你的 xml。第一次确保可见性为真。
  • @Arman 请查看它正在运行的编辑答案。我查过了。
【解决方案2】:

这是一个简单的解决方案,希望对您有所帮助。

if (yoursecondLayout.getVisibility() == View.GONE) {

        yourfirstlayout.setVisibility(View.GONE);
        yoursecondLayout.setVisibility(View.VISIBLE);

    } else {

        yourfirstlayout.setVisibility(View.VISIBLE);
        yoursecondLayout.setVisibility(View.GONE);

    }

【讨论】:

    【解决方案3】:

    这样试试,

    if (mute.getVisibility() != View.INVISIBLE)
           power.setVisibility(View.INVISIBLE);
    else
           power.setVisibility(View.VISIBLE);
    

    【讨论】:

      【解决方案4】:

      它没有改变的原因是View.GONEView.INVISIBLE 具有相同的行为,即隐藏元素。要显示元素,您应该使用View.VISIBLE

      另一个提示:将 mute 变量设为全局变量并使用 isShown 方法。永远记住,在onCreate方法上初始化你的变量就像在onClick上初始化它一样,它的性能是有区别的。

      Imageview mute;
      
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          mute = (ImageButton) findViewById(R.id.mute);
          mute.setOnClickListener(this);
      }
      
      
      @Override
      public void onClick(View v) {
          if (mute.isShown())
              power.setVisibility(View.INVISIBLE);
          else
              power.setVisibility(View.VISIBLE);
          }
      });
      

      【讨论】:

        【解决方案5】:

        View.INVISIBLEView.GONE 具有相同的效果,您的视图将不可见。

        唯一的区别是,使用INVISIBLE 视图仍会占用空间用于布局目的,而使用GONE 视图将占用任何空间。

        你应该使用View.VISIBLE

        public void onClick(View v) {
            mute = (ImageButton) findViewById(R.id.mute);
            if (mute.isShown())
                power.setVisibility(View.GONE);
            else
                power.setVisibility(View.VISIBLE);
        }
        

        【讨论】:

          猜你喜欢
          • 2015-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          • 1970-01-01
          相关资源
          最近更新 更多