2012-06-29 57 views

回答

0

不,但您可以用單獨的徽標圖形(android:logo,然後setDisplayUseLogoEnabled())替換圖標。您可以將雙行標題作爲徽標圖形的一部分嵌入,然後不通過setDisplayShowTitleEnabled()顯示原始標題字符串。 AFAIK,這個組合應該可以工作。

+0

感謝您的提示,但我[setCustomView]解決了它(http://developer.android.com/reference/android/app/ActionBar.html#setCustomView(int)的) – benkap

6

ActionBar上的默認TextView不支持換行,並且沒有公開的方法將其設置爲換行。因此,創建一個靈活的佈局,像這樣的:action_bar_title_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

<TextView 
    android:id="@+id/action_bar_title" 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:gravity="center_vertical" 
    android:ellipsize="end" 
    android:maxLines="2"/> 

</LinearLayout> 

然後設置這個作爲你的動作條的自定義佈局:

ActionBar actionBar = getActionBar(); 
actionBar.setDisplayShowCustomEnabled(true); 
actionBar.setCustomView(R.layout.action_bar_title_layout); 
((TextView) findViewById(R.id.action_bar_title)).setText(
    "This is a long text title that will wrap to multiple lines, when necessary."); 
+0

很好的解決方案。謝謝。 – PeteH

12

我發現了一個更好的解決方案完美的作品最多Android 4.2.2的圖標和標題是一個可點擊的項目。

int titleId = Resources.getSystem() 
     .getIdentifier("action_bar_title", "id", "android"); 
if (titleId > 0) { 
    TextView title = (TextView) findViewById(titleId); 
    title.setSingleLine(false); 
    title.setMaxLines(2); 
    title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); 
} 

如果您正在使用ActionBarSherlock,使用此代碼:

int titleId = Resources.getSystem() 
     .getIdentifier("action_bar_title", "id", "android"); 
if (titleId == 0) { 
    titleId = com.actionbarsherlock.R.id.abs__action_bar_title; 
} 
TextView title = (TextView) findViewById(titleId); 
if (title != null) { 
    title.setSingleLine(false); 
    title.setMaxLines(2); 
    title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); 
} 
+0

這通過使用支持庫的ActionBar以及4.4。但在平臺上失敗<= 2.3 – NKijak

31

我不太清楚,如果你正在尋找以下,但:

actionBar.setSubtitle(字符串字符串)在主Title下面設置第二行,使用較小的字體。

例如:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_left_drawer_item_clicked); 
     String value = getIntent().getExtras().getString("drawerItemString"); 

     ActionBar actionBar = getActionBar(); 
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      // Show the Up button in the action bar. 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 
     actionBar.setTitle(selectedBook.getTitle()); 
     actionBar.setSubtitle(selectedBook.getAuthorName()); 

} 
+0

此處列出了最佳解決方案。應該被標記爲答案! – Johan

+0

這個解決方案的問題是,如果authorName爲空,標題仍然會顯示在第一行,而第二行仍然是空的。那個樣子不好... –