Динамическое изменение текста для кнопки Android Actionbar
У меня есть панель действий (с использованием actionbarsherlock), в которой есть два элемента. Одним из них является количество очков пользователя собраны в приложении. Я хочу изменить эту кнопку панели действий, когда количество очков изменится.
Я не могу понять, как установить TextView этой кнопки. Что я могу сделать это через код?
3 ответов
прежде всего, вы не устанавливаете "TextView кнопки", потому что кнопка расширяет TextView, вы устанавливаете текст самой кнопки. Вы можете попробовать сделать это следующим образом вonCreate()
:
//I suppose you create custom ActionBar like this
final View addView = getActivity().getLayoutInflater().inflate(R.layout.my_action_bar, null);
bar.setCustomView(addView);
button=(Button)addView.findViewById(R.id.button);
button.setText("Whatever");
Если вы используете меню, то вы должны попробовать этот подход:
getSupportMenuInflater().inflate(R.menu.activitymenu, menu);
MenuItem menuItem=menu.findItem(R.id.menuSearch);
также попробуйте посмотреть здесь,здесь и здесь. Это должно быть полезно.
элементы ActionBar находятся в меню "Параметры", отображаемые в виде кнопок, когда они показаны на панели. Если значок не указан, в качестве заголовка кнопки используется заголовок параметра MenuItem,
Итак, если вы не используете пользовательский вид, и вы просто используете заголовок пункта меню в качестве индикатора оценки, вы можете изменить это в onPrepareOptionsMenu()
. Когда вам нужно обновить, позвоните invalidateOptionsMenu()
, и onPrepareOptionsMenu будет вызван для вас.
например
//user scores some points
mUserScore += points;
invalidateOptionsMenu();
затем в вызов:
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem score = menu.findItem(R.id.score_menu_item);
score.setTitle(String.valueOf(mUserScore));
}
этот код работал для меня
actionBar.setCustomView(R.layout.my_action_bar);
button=(Button)actionBar.getCustomView().findViewById(R.id.button);
button.setText("text");