我有一个操作栏(使用actionbarsherlock),它有两个项目。其中之一是用户在我的应用程序中收集的点数。点数改变时,我想更改此操作栏按钮。为Android动态更改文本操作栏按钮
我无法弄清楚如何设置该按钮的TextView。我能做些什么来设置通过代码?
我有一个操作栏(使用actionbarsherlock),它有两个项目。其中之一是用户在我的应用程序中收集的点数。点数改变时,我想更改此操作栏按钮。为Android动态更改文本操作栏按钮
我无法弄清楚如何设置该按钮的TextView。我能做些什么来设置通过代码?
首先你不设置“TextView of a Button”,因为Button扩展了TextView,你设置了Button本身的文本。你可以尝试做到这一点通过以下方式您的活动的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");
所以我不知道这是工作正是我的情况。我有这个actionBar = getSupportActionBar(); \t \t actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);对于操作栏,然后是菜单xml中的一些项目。我无法弄清楚如何访问它们。 – Jeremy
请参阅编辑您的案例 – slezadav