【问题标题】:How to use visibility on android studio?如何在 android studio 上使用可见性?
【发布时间】:2022-01-18 16:59:29
【问题描述】:

认为我在导航栏上有 4 个按钮。 第一个按钮包含一些数据或项目,其他按钮也包含一些数据或项目。

注意:所有四个按钮都在同一个 xml 文件下。

如果我点击第一个按钮,我希望它会显示第一个按钮数据或项目,同时它会隐藏其他三个按钮数据或项目。我想对所有按钮使用相同的方法。

我该怎么做,请帮帮我。

【问题讨论】:

    标签: android android-studio android-layout android-xml


    【解决方案1】:

    按钮具有不同的可见性,如果您想以编程方式使按钮不可见且不可点击,您应该使用:

    Button button;
    button.setVisibility(View.GONE);
    

    如果你不想看到你的按钮但你想要一个 onClick 而不是使用:

    Button button;
    button.setVisibility(View.INVISIBLE);
    

    【讨论】:

      【解决方案2】:

      您可以通过使 onClick 中的所有其他按钮可见性消失来实现这一点:

      1. 如果你在活动中

        override fun onCreate(savedInstanceState: Bundle?) {
        
           val b1 = findViewById(R.id.button1)      
           val b2 = findViewById(R.id.button2)
           val b3 = findViewById(R.id.button3)
           val b4 = findViewById(R.id.button4)
        
           b1.setOnClickListener {
              b1.visibility = View.VISIBLE
              b2.visibility = View.GONE
              b3.visibility = View.GONE
              b4.visibility = View.GONE
          }
        
          b2.setOnClickListener {
             b1.visibility = View.GONE
             b2.visibility = View.VISIBLE
             b3.visibility = View.GONE
             b4.visibility = View.GONE
          }
        
          b3.setOnClickListener {
             b1.visibility = View.GONE
             b2.visibility = View.GONE
             b3.visibility = View.VISIBLE
             b4.visibility = View.GONE
          }
        
          b4.setOnClickListener {
             b1.visibility = View.GONE
             b2.visibility = View.GONE
             b3.visibility = View.GONE
             b4.visibility = View.VISIBLE
          }
        }
        
      2. 如果你在 Fragment 中

        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
           super.onViewCreated(view, savedInstanceState)
        
           val b1 = view.findViewById(R.id.button1)      
           val b2 = view.findViewById(R.id.button2)
           val b3 = view.findViewById(R.id.button3)
           val b4 = view.findViewById(R.id.button4)
        
           b1.setOnClickListener {
              b1.visibility = View.VISIBLE
              b2.visibility = View.GONE
              b3.visibility = View.GONE
              b4.visibility = View.GONE
           }
        
           b2.setOnClickListener {
              b1.visibility = View.GONE
              b2.visibility = View.VISIBLE
              b3.visibility = View.GONE
              b4.visibility = View.GONE
           }
        
           b3.setOnClickListener {
              b1.visibility = View.GONE
              b2.visibility = View.GONE
              b3.visibility = View.VISIBLE
              b4.visibility = View.GONE
           }
        
           b4.setOnClickListener {
              b1.visibility = View.GONE
              b2.visibility = View.GONE
              b3.visibility = View.GONE
              b4.visibility = View.VISIBLE
           }
        }
        

      在此示例中,当您按下一个按钮时,他将可见,而所有其他按钮将从 UI 中消失。

      你可以用 INVISIBLE 代替 GONE,不同的是,在 GONE 中,视图不会“捕捉”屏幕中的空间,而 INVISIBLE 会,只是对用户不可见(有关更多信息,请阅读 this

      【讨论】:

        【解决方案3】:

        当你想隐藏其他三个按钮时,你可以使用 switch case,你可以点击按钮,点击一个按钮,你可以隐藏所有其他按钮。

           Button b1 = (Button) findViewById(R.id.button1);       
           Button b2 = (Button) findViewById(R.id.button2);
           Button b3 = (Button) findViewById(R.id.button3);
           Button b4 = (Button) findViewById(R.id.button4);
        
            b1.setOnClickListener(this)         
            b2.setOnClickListener(this)
            b3.setOnClickListener(this)
            b4.setOnClickListener(this)
         
        

        当您定义 onclick 方法时,您将获得被点击视图的 id。

        public void onClick(View v) {
                   // Perform action on click
                  switch(v.getId()) {
        
                  case R.id.button1: 
                     b1.setVisibility(View.VISIBLE);
                     b2.setVisibility(View.GONE);
                     b3.setVisibility(View.GONE);
                     b4.setVisibility(View.GONE);
                     break;
        
                case R.id.button2: 
                     b1.setVisibility(View.GONE);
                     b2.setVisibility(View.VISIBLE);
                     b3.setVisibility(View.GONE);
                     b4.setVisibility(View.GONE);
                     break;
        
                 case R.id.button3: 
                     b1.setVisibility(View.GONE);
                     b2.setVisibility(View.GONE);
                     b3.setVisibility(View.VISIBLE);
                     b4.setVisibility(View.GONE);
                     break;
        
               case R.id.button1: 
                     b1.setVisibility(View.GONE);
                     b2.setVisibility(View.GONE);
                     b3.setVisibility(View.GONE);
                     b4.setVisibility(View.VISIBLE);
                     break;
             }
        }
        

        【讨论】:

          【解决方案4】:

          因为您想隐藏数据/项目而不是按钮。如果您直接隐藏按钮。你不能点击那个。 假设如果您单击 button1 并且它隐藏了其他按钮。你不能点击button2。 您必须将所有数据放在可以隐藏的子布局中。

          Button b1 = (Button) findViewById(R.id.button1);       
          Button b2 = (Button) findViewById(R.id.button2);
          Button b3 = (Button) findViewById(R.id.button3);
          Button b4 = (Button) findViewById(R.id.button4);
          
          RelativeLayout r1 = (RelativeLayout) findViewById(R.id.buttonlayout1);       
          RelativeLayout r2 = (RelativeLayout) findViewById(R.id.buttonlayout2);
          RelativeLayout r3 = (RelativeLayout) findViewById(R.id.buttonlayout3);
          RelativeLayout r4 = (RelativeLayout) findViewById(R.id.buttonlayout4);
          
          b1.setOnClickListener(this)         
          b2.setOnClickListener(this)
          b3.setOnClickListener(this)
          b4.setOnClickListener(this)
          

          在 onClick 方法中隐藏/显示视图

          public void onClick(View v) {
                     // Perform action on click
                    switch(v.getId()) {
          
                    case R.id.button1: 
                       r1.setVisibility(View.VISIBLE);
                       r2.setVisibility(View.GONE);
                       r3.setVisibility(View.GONE);
                       r4.setVisibility(View.GONE);
                       break;
          
                  case R.id.button2: 
                       r1.setVisibility(View.GONE);
                       r2.setVisibility(View.VISIBLE);
                       r3.setVisibility(View.GONE);
                       r4.setVisibility(View.GONE);
                       break;
          
                   case R.id.button3: 
                       r1.setVisibility(View.GONE);
                       r2.setVisibility(View.GONE);
                       r3.setVisibility(View.VISIBLE);
                       r4.setVisibility(View.GONE);
                       break;
          
                 case R.id.button4: 
                       r1.setVisibility(View.GONE);
                       r2.setVisibility(View.GONE);
                       r3.setVisibility(View.GONE);
                       r4.setVisibility(View.VISIBLE);
                       break;
               }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-06-24
            • 1970-01-01
            • 2018-11-06
            • 1970-01-01
            • 1970-01-01
            • 2011-06-04
            • 1970-01-01
            • 2023-03-23
            相关资源
            最近更新 更多