Pytanie Jak wyśrodkować przycisk Wstecz paska narzędzi?


Mam problem z wyśrodkowaniem przycisku Wstecz na pasku narzędzi pomocy. Używam go wewnątrz ActionBarActivity.

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:toolbar="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

I ustaw nawigację w górę w Aktywności onCreate() lubię to:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setTitle(R.string.title_activity_scanner);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Jednak otrzymuję to: not centered back button screenshot Jak widać, przycisk powrotu jest nieprawidłowo umieszczony

Edytować: Problem wydaje się leżeć w niestandardowej wartości dla ?attr/actionBarSize ustawiono na 40pb, jednak teraz okazuje się, że zamiast tego jest to tytuł niewłaściwie umieszczony.


26
2018-04-27 08:35


pochodzenie


Jedna z akcji Myślę, że wyłączyć ten przycisk Wstecz i umieścić w nim widżet przycisku i wyrównać go, jak chcesz. Mam nadzieję, że to pomoże!!!
możesz usunąć znacznik minHeight i dodać wysokość jako "? attr / actionBarSize" zamiast "wrap_content" - Riyaz Ahamed
@ Viren Chciałbym uniknąć ponownego odkrycia koła, jeśli to możliwe - mewa
@RiyazAhamed, proszę sprawdzić aktualne pytanie, to jest rzeczywiście tytuł, który powoduje, że pasek narzędzi rośnie, ale przycisk powrotu powinien również dostosować się - mewa


Odpowiedzi:


Od developer.android.com :

Pasek narzędzi obsługuje bardziej skoncentrowany zestaw funkcji niż ActionBar. Od początku   do końca pasek narzędzi może zawierać kombinację następujących opcji opcjonalnych   elementy:

Przycisk nawigacyjny. Może to być strzałka w górę, przełączanie menu nawigacji,   zamknąć, zwinąć, zrobić lub wybrać inny glif wybrany przez aplikację. To   należy zawsze używać przycisku, aby uzyskać dostęp do innych miejsc nawigacyjnych   wewnątrz kontenera paska narzędzi Toolbar i jego oznaczonej zawartości lub   w przeciwnym razie pozostaw bieżący kontekst oznaczony przez pasek narzędzi. The   przycisk nawigacji jest wyrównany w pionie w obrębie minimum paska narzędzi Toolbar   wysokość, jeśli jest ustawiona.

Więc jeśli ustawisz minHeight atrybut taki sam jak wysokość paska narzędzi (layout_height ), strzałka wsteczna będzie wyśrodkowana w pionie.


60
2018-06-21 12:07



Dzięki za krótką i mądrą odpowiedź - Amandeep Rohila
Używałem niestandardowego toolbar:theme więc mój problem został rozwiązany przez usunięcie <item name="android:actionBarSize">@android:/abc_action_bar_stacked_max_height</item>  od mojego toolbar's theme - Sheraz Ahmad Khilji
Jeśli używasz obsługi v7 przed 24, możemy ustawić maxButtonHeight równy android:minHeight  zrobić pionowy efekt centrum. Po wersji v7> = 24 + możemy ustawić attr buttonGravity . - act262


Inside ActionBarActivity

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  getSupportActionBat().setTitle("Hello World"); 
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  getSupportActionBar().setHomeButtonEnabled(true);

Kod układu:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/primary"
        app:theme="@style/ToolbarTheme"
        app:popupTheme="@style/Theme.AppCompat"/>

I styl:

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme" parent="AppTheme.Base">

Pamiętaj, że pasek narzędzi to po prostu grupa widoku, więc możesz go stylować w dowolny sposób. Oto link do obrazu: Próbka paska narzędzi

Mam nadzieję, że to pomoże.


2
2018-04-27 09:35





Najlepszym sposobem osiągnięcia tego jest usunięcie zwykłego przycisku Wstecz z paska narzędzi i dodanie niestandardowego ImageButton w układzie XML i ustawienie dla niego obrazu. Możesz umieścić tę ImageButtton w dowolnym miejscu na pasku narzędzi.

Kod układu aktywności powinien wyglądać mniej więcej tak.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <ImageButton
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:id="@+id/button"
        android:src="@drawable/attach_icon"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

1
2018-04-27 09:17





Dla mnie żadne z rozwiązań nie zadziałało. W moim przypadku problemem był zastosowany margines:

 <android.support.v7.widget.Toolbar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     ... >

     <View
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp" />

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

Po zastosowaniu bezpośrednio do paska narzędzi przycisk został wyśrodkowany w pionie:

 <android.support.v7.widget.Toolbar
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginBottom="10dp"
     android:layout_marginTop="10dp"
     ... >

     <View
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

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

0
2018-04-23 15:23





Niedozwolone połączenie @Rick Sanchez odpowiedź - jeśli znasz rozmiar paska narzędzi Toolbar minHeight atrybut możesz użyć:

android:gravity="top"
app:titleMarginTop="@dimen/margin_to_center"

na pasku narzędzi, aby wyśrodkować tekst. Jeśli używasz android:minHeight="?actionBarSize" to byłoby około 13 pensów


0
2017-09-28 19:59





@Rick Odpowiedź Sancheza to praca, konfiguracja Toolbar's layout_height tak samo jak minHeight

Zauważyłem, że w konstruktorze Toolbar pole grawitacji może ustawiać przycisk, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

, ale obsługa v7 Toolbar nie może się ustawić, mButtonGravity = Gravity.TOP;


0
2018-04-25 05:02