2012-10-30 12 views
10

L'ActionBar non mostra il titolo quando si utilizza il layout relativo. E quando non utilizzo il RelativeLayout, gli elementi non sono allineati a destra. Per favore non dirmi di usare le voci di menu come soluzione. Deve essere personalizzato.ActionBarSherlock con RelativeLayout personalizzato non mostra il testo del titolo

Ecco come ho impostato:

ActionBar bar = getSupportActionBar(); 
    bar.setDisplayOptions(
      ActionBar.DISPLAY_HOME_AS_UP | 
      ActionBar.DISPLAY_SHOW_CUSTOM | 
      ActionBar.DISPLAY_SHOW_HOME | 
      ActionBar.DISPLAY_SHOW_TITLE | 
      ActionBar.DISPLAY_USE_LOGO); 

    bar.setTitle(title); 
    bar.setCustomView(actionBar); 
    this.setTitle(title); 

Questo è quando l'align è buono, ma il titolo non viene mostrato

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

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" > 

     <ImageButton 
      android:id="@+id/acion_add" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_add" 
      style="?attr/actionButtonStyle" /> 

     <ImageButton 
      android:id="@+id/action_prev" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_prev" 
      style="?attr/actionButtonStyle" /> 

     <ImageButton 
      android:id="@+id/action_next" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_next" 
      style="?attr/actionButtonStyle" /> 

    </LinearLayout> 

</RelativeLayout> 

Screenshot

E qui arriva il layout in cui il il titolo è mostrato, ma gli articoli sono allineati a sinistra

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:gravity="right"> 

    <ImageButton 
     android:id="@+id/acion_add" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/menu_label_add" 
     style="?attr/actionButtonStyle" /> 

    <ImageButton 
     android:id="@+id/action_prev" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/menu_label_prev" 
     style="?attr/actionButtonStyle" /> 

    <ImageButton 
     android:id="@+id/action_next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/menu_label_next" 
     style="?attr/actionButtonStyle" /> 

</LinearLayout> 

Screenshot

risposta

12

Ho avuto lo stesso problema e abbiamo trovato questo link: https://groups.google.com/forum/?fromgroups=#!topic/actionbarsherlock/He6gst4nvR0

Questo ha funzionato per me:

disposizione:

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

    ... 

</LinearLayout> 

codice:

import com.actionbarsherlock.app.ActionBar.LayoutParams; 
... 
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL); 
getSupportActionBar().setCustomView(segmentView, lp); 
0

C'è una soluzione aggiungendo TextView con titleTextStyle al layout. Se qualcuno di voi ha una risposta migliore, non vedo l'ora di vederlo.

mia soluzione:

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

    <TextView 
     android:id="@+id/player_title" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/buttons_holder" 
     android:ellipsize="end" 
     style="@style/TextAppearance.Sherlock.Widget.ActionBar.Title"/> 

    <LinearLayout 
     android:id="@+id/buttons_holder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" > 

     <ImageButton 
      android:id="@+id/acion_add" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_add" 
      style="?attr/actionButtonStyle" /> 

     <ImageButton 
      android:id="@+id/action_prev" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_prev" 
      style="?attr/actionButtonStyle" /> 

     <ImageButton 
      android:id="@+id/action_next" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/menu_label_next" 
      style="?attr/actionButtonStyle" /> 

    </LinearLayout> 

</RelativeLayout> 
+0

Ho fatto la stessa cosa. Sfortunatamente questo non funziona correttamente nei dispositivi RTL. – AsafK

Problemi correlati