[英]ActionBar not showing title on Android 2.3.3
我正在使用Google support-v7在Android 2.3及更高版本上獲得ActionBar支持,這是我的代碼
public abstract class NavUpActionBarActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.title_back);
actionBar.setDisplayOptions(
ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP);
actionBar.setTitle(getCustomTitleResId());
}
@Override
public boolean onSupportNavigateUp () {
this.finish();
return true;
}
protected abstract int getCustomTitleResId();
}
NavUpActionBarActivity的所有子類都從未在2.3.3上顯示任何標題,有什么想法嗎?
UPDATED1
上面的代碼適用於每個設備4.x
UPDATED2
這是Google的已知問題
代替
actionBar.setTitle(getCustomTitleResId());
您應該執行以下操作:
ActionBar ab = getSupportActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
如果您想從資源中獲取標題的字符串,那么您應該有類似這樣的內容
{
/* ... */
ActionBar ab = getSupportActionBar();
ab.setTitle(getCustomTitleResId());
ab.setSubtitle("sub-title");
/* ... */
}
protected String getCustomTitleResId() {
return getString(R.string.CustomTitle);
}
請記住,如果希望此方法起作用,則應在“活動”中定義它,或將“活動上下文”傳遞給它:
protected String getCustomTitleResId(Context c) {
return c.getString(R.string.CustomTitle);
}
嘗試這個 ..
actionBar.setDisplayShowTitleEnabled(true);
另外,如果您需要創建自定義操作欄,請在此處關注我的帖子。Android操作欄:我可以在appcompat v7中替換自定義標題嗎?
更新資料
設置標題試試這個...
actionBar.setTitle(Html.fromHtml("<font color='#013145'>Sign in or Create an account</font>"));
希望能幫助到你 ..
更新
我已經遇到了這個問題..這就是為什么我建議您為操作欄創建自定義視圖的原因。 在嘗試時,UI外觀和感覺沒有保證。
為了您的關心,如果您仍然需要這樣做:現在,當您嘗試..您需要獲取較低版本標題欄的ID,然后您需要更新該標題..例如:首先,您需要進行檢查對於較低和較高的版本..在較高的版本中,您只需要定義我上面提到的..對於較低的版本,您需要獲取標題Texview的ID,然后在其上方設置標題。
您可以像這樣獲得標題ID。
取得action_bar_title的ID
int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
現在您可以將ID與TextView一起使用
TextView abTitle = (TextView) findViewById(titleId);
abTitle.setText("You title text");
但是總的來說,我發現使用“自定義”視圖是完成此任務的更好的方法..因為這將使您能夠以非常簡便的方式制作更加復雜的UI。
希望您會選擇此選項。
對於較低版本和較高版本,請檢查..您可以這樣嘗試..
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// Higher version
} else {
// Lower version
}
希望它聽起來很棒..干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.