2014-10-10 19 views
5

Tworzę aplikację na Androida, która ma pasek akcji, a pasek akcji zawiera elementy menu po obu stronach. Potrzebuję dodać jeden element menu po lewej stronie i jeden element menu po prawej stronie paska akcji.Jak ustawić elementy menu po lewej stronie paska akcji?

W tym celu utworzyłem własny układ i ustawiłem go na pasku akcji. Jak pokazano na poniższym obrazie

action bar having custom layout

ale po prostu chce mieć pozycje menu w miejscach po lewej stronie i po prawej drugi zrzut ekranu pokazuje pasek działania z pozycji menu

actionbar with menu itemss

Pasek czynności zawiera elementy menu. Tak, po prostu chcę umieścić element menu przycisku plus po lewej stronie tak samo jak pierwszego zrzutu ekranu, ale nie chcę używać niestandardowego układu dla tego,

Muszę również zmienić styl czcionki tytułu paska akcji i umieść to w centrum.

Proszę, pomóż mi. Spędziłem wiele godzin na tym.

Thank You

Odpowiedz

1

Trzeba będzie utworzyć własny pogląd na to. Nie możesz użyć inflacji menu opcji dla swojego przypadku użycia.

Ustaw styl działania na Theme.AppCompat i nie używaj NoActionBar w działaniu lub stylu aplikacji.

Utwórz układ custom_menu.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    <ImageButton android:src="@drawable/add" 
       android:background="?attr/actionBarItemBackground" 
       android:layout_width="?attr/actionBarSize" 
       android:layout_height="?attr/actionBarSize" 
       android:scaleType="centerInside" 
       android:id="@+id/action_add" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true"/> 

    <TextView android:text="NewsFeed" 
       android:background="?attr/actionBarItemBackground" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_width="wrap_content" 
       android:scaleType="centerInside" 
       android:id="@+id/text_appname" 
       android:textSize="30sp" 
       android:textStyle="bold" 
       android:layout_marginLeft="5dp" 
       android:textColor="#FFF" 
       android:paddingTop="5dp" 
       android:layout_toRightOf="@+id/action_add" 
       android:layout_alignParentTop="true"/> 

    <ImageButton android:src="@drawable/search" 
       android:background="?attr/actionBarItemBackground" 
       android:layout_width="?attr/actionBarSize" 
       android:layout_height="?attr/actionBarSize" 
       android:scaleType="centerInside" 
       android:id="@+id/action_search" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true"/> 
</RelativeLayout> 

W swojej działalności onCreate dodać następujący kod

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mainfeed); 
    ActionBar mActionBar = getSupportActionBar(); 
    mActionBar.setDisplayShowHomeEnabled(false); 
    mActionBar.setDisplayShowTitleEnabled(false); 
    LayoutInflater li = LayoutInflater.from(this); 
    View customView = li.inflate(R.layout.custom_menu, null); 
    mActionBar.setCustomView(customView); 
    mActionBar.setDisplayShowCustomEnabled(true); 
    ImageButton addContent = (ImageButton) customView.findViewById(R.id.action_add); 
    addContent.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // ... 
     } 
    }); 

    ImageButton search = (ImageButton) customView.findViewById(R.id.action_search); 
    search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // ... 
     } 
    }); 
} 
0

można bezpośrednio dodawać nawigację rozciągliwej do paska narzędzi wypróbować ten kod:

yourToolbar.setNavigationIcon("Resource id") 

yourToolbar.setNavigationOnClickListener(new ClickListener(){})