Jak pozbyć się dodatkowego dopełnienia w nowym pasku narzędzi Toolbar z Android SDK API w wersji 21 (biblioteka obsługi)?
Mówię o czerwonych strzałkach na tym obrazku:
Oto kod, którego używam:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:padding="0dp"
android:layout_margin="0dp">
<RelativeLayout
android:id="@+id/action_bar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:padding="0dp"
android:background="#000000">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</Toolbar>
Jak widać, ustawiłem wszystkie odpowiednie wypełnienia na 0, ale wokół Błystki nadal jest wypełnienie. Co zrobiłem źle lub co muszę zrobić, aby pozbyć się dodatkowej wyściółki?
Edytuj Niektórzy pytają, dlaczego próbuję to zrobić.
Zgodnie ze specyfikacją Material Design spinner powinien mieć 72dp od lewej strony
Muszę zneutralizować podkładkę, którą Google tam umieścił, aby prawidłowo umieścić mój spinner:
Edytuj 2
Zgodnie z odpowiedzią Chrisa Bane'a poniżej ustawiam contentInsetStart na 0. W bibliotece wsparcia musisz użyć przestrzeni nazw aplikacji:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="@dimen/action_bar_height"
android:background="?attr/colorPrimary"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v4.widget.DrawerLayout>
Mam nadzieję, że to komuś pomaga, przez kilka dni byłem zdezorientowany.
źródło
contentInsetX
właściwości na 0dp.Odpowiedzi:
Lewa wstawka jest spowodowana przez pasek narzędzi Toolbar,
contentInsetStart
który domyślnie ma 16dp.Zmień to na 72dp, aby wyrównać do linii horyzontu.
Aktualizacja dla biblioteki wsparcia v24.0.0:
Aby dopasować specyfikację Material Design, istnieje dodatkowy atrybut,
contentInsetStartWithNavigation
który domyślnie wynosi 16dp. Zmień to, jeśli masz także ikonę nawigacji.źródło
contentInsetStartWithNavigation
na 0 wykonało dla mnie lewą akcję z obsługą v4: 25.0.1Powyższa odpowiedź jest poprawna, ale wciąż jest jedna rzecz, która może powodować problemy (Przynajmniej stworzyło to problem dla mnie)
Użyłem następujących i nie działa poprawnie na starszych urządzeniach -
Sztuczka jest tutaj, wystarczy użyć następujących -
i pozbyć się -
A teraz powinno działać dobrze na wszystkich urządzeniach.
Mam nadzieję, że to pomoże.
źródło
app:contentInsetStartWithNavigation
może pomóc naprawić rzeczy, jeśli jeszcze nie wystarczyPo prostu dodaj tę dwie linie na pasku narzędzi. Następnie otrzymujemy nową usuniętą lewą spację bcoz domyślnie to 16dp.
źródło
Jeśli ktoś potknie się tutaj ... możesz również ustawić dopełnienie , na przykład:
Lub contentInset :
źródło
Oto co zrobiłem i działa idealnie na każdej wersji Androida.
toolbar.xml
MyActivity.java (Aby ukryć domyślny tytuł paska narzędzi)
Wynik z pokazaną linią klawiszy
źródło
Ustaw pasek narzędzi w następujący sposób:
Musisz dodać
atrybut, aby dodać odstępy
kliknij ten link, aby uzyskać więcej - Wskazówki dotyczące Androida
źródło
Kombinacją
android:padding="0dp"
W pliku XML paska narzędzii
mToolbar.setContentInsetsAbsolute(0, 0)
W kodzieTo zadziałało dla mnie.
źródło
to działa dla mnie na moim telefonie z Androidem 7.11:
Uwaga: Absolutnie nie odniosłem sukcesu z padding = 0 lub contentInsetLeft = 0 lub contentInsetStart = 0
źródło
Ok, więc jeśli potrzebujesz 72dp, nie możesz po prostu dodać różnicy w dopełnieniu w pliku xml? W ten sposób zachowujesz domyślną wstawkę / wypełnienie dla Androidów, których chcą od nas używać.
Więc: 72-16 = 56
Dlatego: dodaj dopełnienie 56dp, aby uzyskać łączne wcięcie / margines 72dp.
Lub możesz po prostu zmienić wartości w plikach Dimen.xml. właśnie to robię. Zmienia wszystko, cały układ, w tym pasek narzędzi, gdy jest implementowany w nowy, właściwy sposób na Androida.
Dimen Resource File
Link, który dodałem, pokazuje wartości Dimen przy 2dp, ponieważ go zmieniłem, ale domyślnie był ustawiony na 16dp. Po prostu dla ciebie ...
źródło
źródło