簡體   English   中英

ActionBar在Android 2.3.3上未顯示標題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM