0

Реализовал ToggleButton в ActionBar, но есть проблема В ActionBar при запуске активности иконку видно не сразу, сначала видно значение Share Можно ли сделать так, чтобы появлялась сразу иконка? Вот код: 1. Меню:

 <item android:id="@+id/menu_toogle"
 android:title="Share"
 app:showAsAction="ifRoom" />
</menu>

2. Код:

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.menu_main_read, menu);
 return true;
 }
 boolean birthSort=false;
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.menu_toogle:
 if(birthSort){
 item.setIcon(R.drawable.toggle_off);
 birthSort=false;
 }else{
 item.setIcon(R.drawable.toggle_on);
 birthSort=true;
 }
 return true;
 }
 return super.onOptionsItemSelected(item);
 }

Если поменять значение app:showAsAction="ifRoom" на always, то это ничего не меняет Если значение android:title="Share" оставить пустым, то вообще ничего нет, пока не нажмешь на это место, потом появится иконка

задан 9 нояб. 2019 в 3:37
2
  • 1
    видимо вам надо устанавливать свою иконку при создании меню, в onCreateOptionsMenu(), так она у вас и будет появляться только при нажатии, так как устанавливается в onOptionsItemSelected() - реакция на нажатие пункта меню. А вообще лучше установить сам виджет, а не его симуляцию картинками Commented 9 нояб. 2019 в 4:16
  • Спасибо за наводку, сделал все, сейчас добавлю свой ответ, может пригодится кому Commented 9 нояб. 2019 в 4:34

1 ответ 1

0

Решение:

 private Menu menu;
@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 this.menu = menu;
 getMenuInflater().inflate(R.menu.menu_main_read, menu);
 menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.toggle_off));
 return true;
 }
 boolean birthSort=false;
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.menu_toogle:
 if(birthSort){
 item.setIcon(R.drawable.toggle_off);
 birthSort=false;
 }else{
 item.setIcon(R.drawable.toggle_on);
 birthSort=true;
 }
 return true;
 }
 return super.onOptionsItemSelected(item);
 }
ответ дан 9 нояб. 2019 в 4:36

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.