为Android ActionBar按钮动态更改文本



我有一个动作栏(使用ActionBarsherlock),其中有两个项目。其中之一是用户在我的应用中收集的点数。当点更改时,我想更改此动作栏按钮。

我不知道如何设置该按钮的文本视图。我该怎么做才能通过代码设置它?

actionbar项目来自选项菜单,在栏上显示为按钮。如果您不提供图标,则将选项的标题用作按钮的标题,

因此,除非您使用自定义视图,否则您只是使用菜单项标题作为分数指示器,则可以在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));
}

首先,您不设置"按钮的文本视图",因为按钮扩展了文本视图,因此您设置了按钮本身的文本。您可以在活动的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.setCustomView(R.layout.my_action_bar);
button=(Button)actionBar.getCustomView().findViewById(R.id.button);
button.setText("text");

最新更新