Думаю, у меня есть 4 кнопки на панели навигации. Первая кнопка содержит некоторые данные или элементы, а другие кнопки также содержат некоторые данные или элементы.
Примечание. Все четыре кнопки находятся в одном XML-файле.
Я хочу, если я нажму первую кнопку, она покажет мне данные или элементы первой кнопки, и в то же время он скроет данные или элементы трех других кнопок. И я хочу использовать один и тот же метод для всех кнопок.
Как я могу это сделать, пожалуйста, помогите мне.
4 ответа
Вы можете добиться этого, сделав видимость всех остальных кнопок GONE в onClick такой забавой:
если вы в действии
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 } }
Если вы находитесь во Фрагменте
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 делает это, просто невидимое для пользователя (для получения дополнительной информации см. это)
Кнопка имеет разную видимость, если вы хотите, чтобы ваша кнопка была невидимой и не нажималась программно, вы должны использовать:
Button button;
button.setVisibility(View.GONE);
Если вы не хотите видеть свою кнопку, но хотите использовать onClick, используйте:
Button button;
button.setVisibility(View.INVISIBLE);
Если вы хотите скрыть три другие кнопки, вы можете использовать случай переключения, где вы можете нажать кнопку, а нажатием одной кнопки вы можете скрыть все остальные кнопки.
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;
}
}
Поскольку вы хотите скрыть данные/элементы, а не кнопки. Если вы скрываете кнопку напрямую. вы не можете нажать на это. Предположим, если вы нажмете кнопку 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;
}
}
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .