【问题标题】:Changing the visibility of views one at a time with a button使用按钮一次更改视图的可见性
【发布时间】:2015-04-26 10:18:39
【问题描述】:

我有三个视图,其可见性当前设置为view.setVisibility(view.GONE),并且我有一个按钮,当用户不断单击该按钮时,我想一次将可见性更改为可见一个。我想我必须使用以按钮单击为中心的 for 循环,但我不知道如何。任何想法将不胜感激。

【问题讨论】:

    标签: java android android-view android-button android-looper


    【解决方案1】:
    int i = 0;
    
    onClick(View v){
       switch(++i){
           case 1:
             view1.setVisibility(View.GONE);
             break;
           case 2:
             view2 setVisibility(View.GONE);
             break;
           case 3:
             view3.setVisibility(View.GONE);
             i = 0;
             break;
          }
        }
    

    【讨论】:

      【解决方案2】:

      您必须创建一个包含视图的数组和一个变量才能知道哪个视图现在可见:

      View[] views; // put your 3 views inside (0 will be first shown)
      int position = 3;
      

      在按钮监听器内部只需更改视图的可见性:

      注意使用静态View.GONEView.VISIBLE

      // hide the view
      views[position].setVisibility(View.GONE);
      // change the position
      position = position == 3 ? 0 : position++; 
      // show new view
      views[position].setVisibility(View.VISIBLE);
      

      【讨论】:

        【解决方案3】:

        维护一个标志 int clickEventFlag = 0

        在您的按钮上单击使用

        clickEventFlag++;
        
        switch(clickEventFlag % 3){
            case 0:
                 //set visible first view
                 break;
            case 1:
                 //set visible second view
                 break;
            case 2:
                 //set visible third view
                 break;
        
         }
        

        【讨论】:

        • 是的,但您接受它作为解决方案,因此您可以修改它而不是投票
        • 不,我不能修改你的代码,但我没有投反对票,因为丑陋我这样做是因为你没有在任何时候隐藏视图,所以点击 2 次后你会看到三视图...
        • 另外,因为您的愤怒确实符合 SO 规则,所以请否决有效答案;)
        • 先生,由于“switch(clickEventFlag % 3)”,您必须使用: if(view.getVisibility() != View.VISIBLE){ view.setVisibility(View.VISIBLE); }
        • @Md.SajedulKarim 实际上我并不关心视图可见或消失。我只是想向他展示如何实现他想要的。意味着在那个 switch case 块中,他可以使用他的逻辑来实现他想要的。
        猜你喜欢
        • 2020-09-11
        • 1970-01-01
        • 2011-12-20
        • 2014-08-04
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        • 1970-01-01
        • 2019-08-05
        相关资源
        最近更新 更多