Думаю, у меня есть 4 кнопки на панели навигации. Первая кнопка содержит некоторые данные или элементы, а другие кнопки также содержат некоторые данные или элементы.

Примечание. Все четыре кнопки находятся в одном XML-файле.

Я хочу, если я нажму первую кнопку, она покажет мне данные или элементы первой кнопки, и в то же время он скроет данные или элементы трех других кнопок. И я хочу использовать один и тот же метод для всех кнопок.

Как я могу это сделать, пожалуйста, помогите мне.

0
MD. NAHIAN AHMED 18 Янв 2022 в 19:59

4 ответа

Лучший ответ

Вы можете добиться этого, сделав видимость всех остальных кнопок GONE в 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. Если вы находитесь во Фрагменте

    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
       }
    }
    

В этом примере, когда вы нажимаете на кнопку, он будет виден, а все остальное исчезнет из пользовательского интерфейса.

Вы можете использовать INVISIBLE вместо GONE, разница в том, что в GONE представление не «захватывает» пространство на вашем экране, а INVISIBLE делает это, просто невидимое для пользователя (для получения дополнительной информации см. это)

0
Evyatar Cohen 19 Янв 2022 в 10:18

Кнопка имеет разную видимость, если вы хотите, чтобы ваша кнопка была невидимой и не нажималась программно, вы должны использовать:

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

Если вы не хотите видеть свою кнопку, но хотите использовать onClick, используйте:

Button button;
button.setVisibility(View.INVISIBLE);
0
Mattia Vaccarello 18 Янв 2022 в 20:56

Если вы хотите скрыть три другие кнопки, вы можете использовать случай переключения, где вы можете нажать кнопку, а нажатием одной кнопки вы можете скрыть все остальные кнопки.

   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, вы получите идентификатор щелкнутого представления.

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;
     }
}
0
JAY_Panchal 18 Янв 2022 в 23:59

Поскольку вы хотите скрыть данные/элементы, а не кнопки. Если вы скрываете кнопку напрямую. вы не можете нажать на это. Предположим, если вы нажмете кнопку 1, и она скроет другие кнопки. вы не можете нажать на кнопку2. вы должны поместить все данные в дочерний макет, который вы можете скрыть.

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;
     }
}
0
Aman Bhatia 19 Янв 2022 в 13:42