2012-11-15 4 views
8

Mam pasek akcji z logo, tytułem, trzema zakładkami i jednym elementem akcji.Zawsze wyświetlaj pełny tytuł w ActionBar

W trybie portretowym wszystko wygląda dobrze, ponieważ języczki zostanie przeniesiona do ułożone ActionBar, tak: __ _ __ _ __ _ __ _ __ _ __
# Mój tytuł                             ¤
_
_ __ _ _ __ __ __ __ _ __
Tab 1 | Tab 2 | Tab 3
__ _ __ _ __ _ __ _ __ _ __

Ale w trybie poziomym tytuł zostanie obcięty, ponieważ języczki zostanie przeniesiony na górę ActionBar, jak to: __ _ __ _ _ __ __ _ _ _ ___ __ __ _ __ __
# My ... | Tab 1 | Tab 2 | Tab 3 |   ¤
__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __

Czy mimo to mogę powiedzieć ActionBar, że tytuł nie powinien być nigdy obcięty? Jeśli nie, czy mogę przynajmniej ustawić szerokość tytułu? (To jest dla mnie ok, jeśli języczki zostanie przeniesiona do piętrowej ActionBar nawet w trybie poziomym)

EDIT:

Code wymagane.Oto ona:

public class MyActivity extends SherlockFragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ActionBar actionBar = super.getSupportActionBar(); 
    actionBar.setHomeButtonEnabled(true); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    actionBar.setTitle("My Long Title"); 

    actionBar.addTab(actionBar 
      .newTab() 
      .setText("Tab 1") 
      .setTabListener(
        new TabListener<MyFragment>(this, "tab1", 
          MyFragment.class, null))); 
    actionBar.addTab(actionBar 
      .newTab() 
      .setText("Tab 2") 
      .setTabListener(
        new TabListener<MyFragment>(this, "tab2", 
          MyFragment.class, null))); 
    actionBar.addTab(actionBar 
      .newTab() 
      .setText("Tab 3") 
      .setTabListener(
        new TabListener<MyFragment>(this, "tab3", 
          MyFragment.class, null))); 
} 
} 
+1

opublikować swój kod/xml. –

+0

@Anders proszę opublikować rozwiązanie. Jeśli masz jeden –

Odpowiedz

0

Myślę, że jeśli chcesz stałej tytuł następnie w folderze menu będziesz miał plik xml jak

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <group android:id="@+id/group" > 
     <item 
      android:id="@+id/menu1" 
      android:orderInCategory="100" 
      android:showAsAction="ifRoom" 
      android:title="@string/menu1"/> 

     <item 
      android:id="@+id/Search" 
      android:actionViewClass="android.widget.SearchView" 
      android:icon="@drawable/ic_action_search" 
      android:orderInCategory="100" 
      android:showAsAction="always" 
      android:title="@string/menu3"> 
     </item> 

     <item 
      .............. 
     </item> 

    </group> 

</menu> 

w powyższym kodzie android: showAsAction odgrywa istotną role.Jeśli chcesz, aby jakikolwiek przedmiot był pokazywany zawsze wtedy powinieneś użyć android: showAsAction = "always". To z pewnością rozwiąże twój problem.

Nie użyłem SherlockFragmentActivity, ale myślę, że to może ci bardzo pomóc.

Proponuję, aby obsłużyć, że za pośrednictwem pliku xml folderu menu za pomocą następującego postępowania w swojej java file.Code przedstawia się następująco: - W swojej onCreate() spróbuj tego: -

setContentView(R.layout.activity_action_bar_eg);//this is the xml file name inside the menu folder 
getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayShowTitleEnabled(false); 
ActionBar bar=getActionBar(); 
bar.show(); 

Z tymi zmianami również dla rozwiązania twojego problemu

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.activity_action_bar_eg, menu); 
} 
+2

To tak naprawdę nie odpowiada na pytanie, nie? Nie musi mieć przycisku akcji (przedmiot). A co, jeśli cały ActionButton jest już ukryty, a tytuł nadal jest przycięty z powodu tabulatorów? – NLemay