我有一個操作欄(使用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