Aby użyć niestandardowego tytułu we Toolbar
wszystkim, co musisz zrobić, pamiętaj, że Toolbar
jest to tylko fantazyjna grupa ViewGroup, dzięki czemu możesz dodać niestandardowy tytuł w następujący sposób:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toolbar Title"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
</android.support.v7.widget.Toolbar>
Oznacza to, że możesz stylizować w TextView
dowolny sposób, ponieważ jest to zwykły styl TextView
. Dzięki temu możesz uzyskać dostęp do tytułu w następujący sposób:
Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
( zobacz tę odpowiedź ).Tytuł paska narzędzi można rysować. Wszelkie dostosowania, które wprowadzisz, muszą być wykonane w motywie. Dam ci przykład.
Układ paska narzędzi:
Style:
źródło
TextView
jest trochę hackerskie, ale odpowiedź refleksyjna to po prostu zło.To tylko po to, aby połączyć wszystkie elementy za pomocą odpowiedzi @ MrEngineer13 z komentarzami @Jonik i @Rick Sanchez w odpowiedniej kolejności, aby łatwo osiągnąć tytuł wyśrodkowany !!
Układ z
TextAppearance.AppCompat.Widget.ActionBar.Title
:Sposób na osiągnięcie w odpowiedniej kolejności:
Nie zapomnij upvote @ MrEngineer13 odpowiedzieć !!!
Oto przykładowy projekt ToolbarCenterTitleSample
Mam nadzieję, że pomogę komuś innemu;)
źródło
Scrolling Activity
?nie mamy bezpośredniego dostępu do tytułu paska narzędzi TextView, więc używamy refleksji, aby uzyskać do niego dostęp.
źródło
mTitleTextView
sięabcde12345
?Oto podejście zależne od tekstu tytułu do znalezienia
TextView
instancjiToolbar
.źródło
Zdefiniuj następującą klasę:
... a następnie użyj go zamiast zwykłego w
Toolbar
ten sposób:Nadal potrzebujesz tych 2 linii kodu
Activity
(jak w standardzieToolbar
):Otóż to! Nie musisz ukrywać standardowego wyrównanego do lewej tytułu tytułu, nie musisz powtarzać tego samego kodu XML w kółko itp., Po prostu użyj go
CenteredToolbar
tak, jakby był domyślnyToolbar
. Możesz także programowo ustawić własną czcionkę, ponieważ masz teraz bezpośredni dostęp doTextView
. Mam nadzieję że to pomoże.źródło
centeredTitleTextView.setTextColor(...)
powinien działaćLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Nikt o tym nie wspominał, ale istnieją pewne atrybuty
Toolbar
:app:titleTextColor
do ustawiania koloru tekstu tytułowegoapp:titleTextAppearance
do ustawiania wyglądu tekstu tytułowegoapp:titleMargin
do ustalenia marginesuSą też inne marginesy po stronie konkretnej, takie jak
marginStart
itp.źródło
<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
i zastosuj go na pasku narzędziapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
naandroid.support.v7.widget.Toolbar
TAGKorzystam z tego rozwiązania:
źródło
Bez paska narzędzi TextView możemy dostosować czcionkę za pomocą poniższego kodu
źródło
źródło
Układ:
Kod:
źródło
Rozwiązałem to rozwiązanie, a są to następujące kody:
I możesz zmienić tytuł / etykietę, w Activity, napisz poniższe kody:
TextView mTitle = (TextView) toolbarTop.findViewById (R.id.toolbar_title); mTitle.setText („@ string / ....”);
źródło
Możesz użyć w następujący sposób
źródło
Bardzo szybkim i łatwym sposobem ustawienia niestandardowej czcionki jest użycie niestandardowej
titleTextAppearance
zfontFamily
:Dodaj do styles.xml :
W folderze res utwórz folder czcionek (np .: varela_round_regular.ttf )
Przeczytaj oficjalny przewodnik, aby dowiedzieć się więcej https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
źródło
Nie wiem, czy coś się zmieniło w bibliotece appcompat, ale jest to dość trywialne, nie wymaga refleksji.
źródło
Rozwiązanie zastosowane w przypadku tego problemu:
Myślę, że dla grawitacji środkowej konieczna byłaby zmiana parametrów układu na match_parent w poziomie, a następnie:
źródło
Aktualizacja z odpowiedzi @ MrEngineer13: aby wyrównać centrum tytułu w każdym przypadku, w tym ikonę Hamburger, menu opcji, możesz dodać
FrameLayout
pasek narzędzi w następujący sposób:źródło
W XML spróbuj tego:
W kodzie:
źródło
Chociaż dodanie widoku tekstu do paska narzędzi może rozwiązać problem ograniczenia stylu tytułowego, jest z tym problem. Ponieważ nie dodajemy go do układu, nie mamy zbyt dużej kontroli nad jego szerokością. Możemy użyć wrap_content lub match_parent.
Rozważmy teraz scenariusz, w którym mamy searchView jako przycisk na prawej krawędzi paska narzędzi. Jeśli zawartość tytułu jest większa, zostanie zasłonięty przycisk na górze. Nie ma sposobu na kontrolowanie tego braku ustawiania szerokości etykiety i jest to coś, czego nie chcesz robić, jeśli chcesz mieć responsywny projekt.
Oto rozwiązanie, które działało dla mnie i różni się nieco od dodania widoku tekstu do paska narzędzi. Zamiast tego dodaj pasek narzędzi i widok tekstu do względnego układu i upewnij się, że widok tekstu znajduje się na górze paska narzędzi. Następnie możemy użyć odpowiednich marginesów i upewnić się, że widok tekstu pokazuje się tam, gdzie chcemy.
Upewnij się, że ustawiłeś pasek narzędzi tak, aby nie wyświetlał tytułu.
Oto kod XML tego rozwiązania:
Rozwiązuje problem @ ankur-chaudhary wspomniany powyżej.
źródło
Ponieważ
android.support.v7.appcompat 24.2
Toolbar
ma metodęsetTitleTextAppearance
i możesz ustawić jej czcionkę bez zewnętrznegotextview
.stwórz nowy styl w styles.xml
i użyj go
źródło
Kilka dni spędziłem na poszukiwaniu uniwersalnego rozwiązania. Mój pasek narzędzi działa z menu Androida i ikoną nawigacji.
Najpierw musisz utworzyć niestandardową klasę paska narzędzi. Ta klasa musi obliczać pozycje wyśrodkowane (wypełnienia):
Po drugie, musisz utworzyć pasek narzędzi układu:
To wszystko
źródło
Spróbuj wziąć pasek narzędzi i tittle w osobnym widoku. Zobacz prawy koniec i nadaj im wagę równą ciężarowi paska narzędzi. W ten sposób twój tytuł znajdzie się na środku.
źródło
Możesz wstawić ten kod do pliku xml
źródło
źródło
Otoczenie
android:gravity="center"
działało dla mnieBez stylizacji. Pasek narzędzi to w zasadzie
ViewGroup
wszystko, co musisz zrobić, to ustawić w nim grawitację elementów.źródło
androidx.appcompat.widget.Toolbar
dla niestandardowej czcionki na pasku narzędzi można przesłonić tekst Zobacz stylowo czcionkę, a następnie każdy tekst Zobacz w aplikacji również czcionka tytułu paska narzędzi zmieniana automatycznie Testowałem to w Android Studio 3.1.3
zrób to w stylu:
a następnie użyj w swoim motywie tego:
źródło
Znalazłem inny sposób na dodanie niestandardowego paska narzędzi bez dodatkowego kodu Java / Kotlin.
Po pierwsze: utwórz kod XML z niestandardowym układem paska narzędzi, używając AppBarLayout jako elementu nadrzędnego:
Po drugie: dołącz pasek narzędzi do swojego układu:
źródło
Widzę, że masz dwie opcje:
1) Edytuj XML paska narzędzi. Po dodaniu paska narzędzi do pliku XML zwykle wygląda to tak:
jeśli chcesz go dostosować, po prostu usuń „/” na końcu i ustaw go w ten sposób:
w ten sposób możesz mieć pasek narzędzi i dostosować widok tekstu i logo.
2) Programowo zmień natywny widok tekstu i ikonę:
upewnij się, że pasek narzędzi nie ma wartości zerowej, zanim cokolwiek w nim ustawisz.
źródło
Możesz mieć niestandardowy
TextView
na pasku narzędzi, taki jak ten:To wyśrodkuje tekst. Jeśli chcesz dodać niestandardową czcionkę do normalnej
Toolbar
, wykonaj<style>
:I dodaj go do paska narzędzi:
Dla widoku tekstu na pasku narzędzi możesz go zdefiniować za pomocą
fontFamily
atrybutu:źródło
Napotkałem ten sam problem, naprawiony przez wykonanie tego w MainActivity
I we fragmencie
źródło