Установить кнопку в GONE изначально?
Мне нужно, чтобы эта кнопка промаха была Унесена на начальном экране, затем появлялась при переключении кнопки переключения, и снова становилась УДАЛЕНО при повторном переключении.
Проблема, которая сохраняется, состоит в том, что кнопка не исчезла изначально на начальном экране, мне нужно дважды нажать кнопку переключения, чтобы она исчезла.
вот код:
toggle = (ToggleButton) findViewById(R.id.bRedGreen);
toggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
pluskugle = (Button) findViewById(R.id.bBallhole);
minuskugle = (Button) findViewById(R.id.bBallhole);
pluskegle = (Button) findViewById(R.id.bKegle);
minuskegle = (Button) findViewById(R.id.bKegle);
plusmidkegle = (Button) findViewById(R.id.bKeglemid);
minusmidkegle = (Button) findViewById(R.id.bKeglemid);
bottomlayout = (LinearLayout) findViewById(R.id.bottomlayout);
miss = (Button) findViewById(R.id.bMiss);
if(toggle.isChecked())
{
minuskugle.setBackgroundResource(R.drawable.redballinhole);
minuskegle.setBackgroundResource(R.drawable.redkegle);
minusmidkegle.setBackgroundResource(R.drawable.midkegleminus);
miss.setBackgroundResource(R.drawable.missbutton);
miss.setVisibility(View.VISIBLE);
}
else
{
pluskugle.setBackgroundResource(R.drawable.whiteballinhole);
pluskegle.setBackgroundResource(R.drawable.kegleb);
plusmidkegle.setBackgroundResource(R.drawable.midkegleplus);
miss.setVisibility(View.GONE);
}
}
});
}
4 ответа
Поведение, которое вы видите, является результатом двух вещей:
- Причина, по которой кнопка изначально видима, заключается в том, что в вашем XML нет android: visibility = "lost", а код для его установки невидимым не сработал, потому что ни одного клика еще не произошло.
Причина, по которой вам приходится дважды нажимать кнопку-переключатель, чтобы установить ее в невидимое состояние: первый щелчок переключает переключатель с не отмеченного на проверенный, поэтому код устанавливает кнопку (которая уже видна) для отображения. ВТОРОЙ щелчок - это первый раз, когда срабатывает onClick, а кнопка переключения не проверяется. Вот когда вы на самом деле видите, как кнопка становится невидимой.
Чтобы исправить это, просто добавьте "android:visibility="GONE"в качестве атрибута к кнопке" пропустить "в XML-макете.
Вы можете установить его видимость в вашем макете с Android:visibility="ушел"
Я бы посоветовал вам переместить все ваши методы findViewById из метода переключения toClick в метод onCreate или инициализации. Тогда под вашим:
miss = (кнопка) findViewById(R.id.bMiss);
положил:
miss.setVisibility (View.INVISIBLE);
или же
miss.setVisibility(View.GONE);