2012-06-29 13 views

Respuesta

0

No, pero puede reemplazar el icono con un gráfico de logotipo separado (android:logo y luego setDisplayUseLogoEnabled()). Puede insertar su título de dos líneas como parte del gráfico del logotipo y luego no mostrar la cadena del título original a través del setDisplayShowTitleEnabled(). AFAIK, esa combinación debería funcionar.

+0

Gracias por la pista, pero lo resolví con [setCustomView] (http://developer.android.com/reference/android/app/ActionBar.html#setCustomView (int)) – benkap

6

La Vista de texto predeterminada en la barra de acciones no admite el ajuste de línea, y no hay un método expuesto para configurarlo para ajustar. Por lo tanto crear un diseño flexible y de esta manera: 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> 

asentando después esto como el diseño personalizado en su Barra de acciones:

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

buena solución. Gracias. – PeteH

12

he encontrado una mejor solución que funciona perfectamente hasta Android 4.2.2 donde el icono y el título son un elemento en el que se puede hacer clic.

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); 
} 

Si está utilizando ActionBarSherlock, utilice este código:

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

Esto funciona hasta 4.4 utilizando también la barra de herramientas de la biblioteca de soporte. Pero falla en plataformas <= 2.3 – NKijak

31

No estoy muy seguro de si se busca la siguiente, pero:

actionBar.setSubtitle (String cadena) establece una segunda línea con letra más pequeña debajo de su Título principal.

ejemplo:

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

La mejor solución se detalla aquí. Debe ser el marcado como la respuesta! – Johan

+0

El problema con esta solución es que si authorName está vacío, el título seguirá apareciendo en la primera línea, mientras que la segunda línea permanecerá vacía. Esa mirada no es buena ... –

Cuestiones relacionadas