2014-12-17 24 views
16

Próbuję użyć paska narzędzi zamiast paska akcji, ale nie mogę wymyślić, jak dodać przycisk w górę, aby powrócić do poprzedniej czynności. Nie mogłem znaleźć żadnej metody, która mogłaby się z tym wiązać.Pasek narzędzi - dodaj przycisk w górę

Jak dodać przycisk "w górę"?

Odpowiedz

23

Chyba to, czego szukasz, jest coś takiego:

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail); 
setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

lub w przypadku korzystania z Fragmentu :

Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail); 
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar); 
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Spowoduje to wyświetlenie paska czynności na pasku narzędzi, ale nie martw się, że wszystko będzie pasować do siebie ll. Ostatnim, co musisz zrobić, jeśli nie chcesz, aby cień znajdował się pod paskiem akcji lub na jakimkolwiek jego tle, zmień swój motyw w pliku vaules/styles.xml.

<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar"> 
1

Wywołanie getSupportActionBar().setHomeButtonEnabled(true); powinien nadal pracować myślę, tak długo, jak już nazywany setSupportActionBar(toolbar);

0

Możesz dodać własny przycisk "up" na pasku narzędzi, w końcu to tylko ViewGroup.

Można dostosować pasek narzędzi tyle, ile chcesz, w toolbar.xml lub gdziekolwiek zdefiniowaniu android.support.v7.widget.Toolbar w układzie dodać swój przycisk „w górę” jak podano poniżej:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/color_toolbar" 
    android:layout_width="match_parent"> 

    <ImageButton 
     android:id="@+id/upButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="uphandler" 
     android:src="@drawable/backbutton" 
     android:layout_gravity="end"/> 

</android.support.v7.widget.Toolbar> 

teraz określić uphandler funkcję w swojej działalności, aby słuchać tego przycisku w górę:

public void uphandler(View v){ 
     this.finish(); // This will kill current activity, and if previous activity is still opened in background, it will come in front. 
} 
+0

Używanie this.finish() jest szablonem zapobiegawczym, ponieważ ikona "up" powinna przenieść użytkownika do hierarchicznego elementu nadrzędnego w aplikacji - niekoniecznie musi to być ostatni wyświetlany ekran: https://material.google.com /patterns/navigation.html#navigation-up-back-buttons – gsysko

3

Jeśli chcesz to zrobić w XML, można użyć ...

<android.support.v7.widget.Toolbar 
      app:navigationIcon="?homeAsUpIndicator" 
      ... 
Powiązane problemy