Próbuję utworzyć prostą aplikację przy użyciu biblioteki Android-support-v7: 21.
Fragmenty kodu:
MainActivity.java
public class MainActivity extends ActionBarActivity {
Toolbar mActionBarToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);
}
Activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_actionbar"
android:background="@null"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:fitsSystemWindows="true" />
</LinearLayout>
Ale zamiast „Mój tytuł” na pasku narzędzi% wyświetlana jest nazwa aplikacji%.
Wydaje się, że setTitle
metoda nie ma wpływu.
Chciałbym pokazać „Mój tytuł”.
UPD:
Wcześniej styles.xml
było:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
</style>
Pomyślałem więc, że pasek akcji nie jest używany. Dodaję NoActionBar
do stylu rodzica:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
</style>
Ale problem nie został rozwiązany.
android
toolbar
android-support-library
krossovochkin
źródło
źródło
Odpowiedzi:
Znaleziono rozwiązanie:
Zamiast:
Użyłem:
I to działa.
źródło
getSupportActionBar().setTitle("My title");
może produkować „java.lang.NullPointerException”setSupportActionBar(mToolbar)
, otrzymasz wyjątek zerowy, ale jeśli go nazwiesz , po prostu zignoruj ten komunikat. Po prostu przeczytaj - developer.android.com/training/appbar/setting-up.htmlKażdy, kto musi skonfigurować tytuł za pomocą paska narzędzi, jakiś czas po ustawieniu paska SupportActionBar, zapoznaj się z tym.
Wewnętrzna implementacja biblioteki wsparcia sprawdza tylko, czy pasek narzędzi ma tytuł (nie null) w momencie konfigurowania paska SupportActionBar. Jeśli tak, to ten tytuł zostanie użyty zamiast tytułu okna. Następnie można ustawić tytuł fikcyjny podczas ładowania prawdziwego tytułu.
później...
źródło
this.setTitle("Title")
, gdziethis
- oznacza odniesienie do działania.Powyższa odpowiedź jest całkowicie prawdą, ale dla mnie nie działa.
Rozwiązałem problem z następującymi rzeczami.
Właściwie to mój XML jest taki:
Wypróbowałem wszystkie opcje i mimo wszystko właśnie usunąłem,
CollapsingToolbarLayout
ponieważ nie muszę używać w tym konkretnym,XML
więc mój końcowy XML jest jak:Teraz musisz użyć
setTitle()
powyższej odpowiedzi:Teraz Jeśli chcesz używać
CollapsingToolbarLayout
iToolbar
razem, musisz korzystaćsetTitle()
zCollapsingToolbarLayout
Niech ci to pomoże. Dziękuję Ci.
źródło
CollapsingToolbarLayout
rozwiązany problemCollapsingToolbarLayout
?Po prostu możesz zmienić dowolną nazwę aktywności za pomocą
źródło
title = "Title"
w Kotlinie, a możethis.setTitle("Title")
w Javie.Spróbuj, możesz zdefiniować tytuł bezpośrednio w XML:
źródło
Aby ustawić tytuł dla każdego tytułu fragmentu paska nawigacyjnego
źródło
Spróbuj tego ... ta metoda działa dla mnie .. !! mam nadzieję, że może komuś pomóc .. !!
Aby wyświetlić logo na pasku narzędzi, wypróbuj poniższy fragment kodu. // Zestaw do rysowania
Daj mi znać wynik.
źródło
źródło
Zobacz https://code.google.com/p/android/issues/detail?id=77763 . Najwyraźniej tak ma działać. Po wywołaniu wywołania
setSupportActionBar()
metody obowiązkiem delegata ActionBar jest przekierowanie wywołania do właściwego widoku.źródło
Próbowałem zmienić nazwę paska narzędzi z fragmentu
Pomogło mi to, mam nadzieję pomóc komuś innemu
Zrzut ekranu:
źródło
Nie chodzi tylko o to
.setTitle
więcej metod obsługi paska narzędzi (Appcompat v7)
onCreate
tylko w połączeniu zgetSupportActionBar().method()
i nie pracuj z
mToolbar.method()
przykłady:
mimo kolejnych metod działa poprawnie bez
getSupportActionBar()
wonCreate
Problem tylko ze
onCreate
zdarzeniem, nadal możesz użyćmToolbar.setTitle()
później zamiast denerwowaćgetSupportActionBar().setTitle()
, na przykład, jeśli dodasz to wonCreate
nim będzie działać (ponieważ zostanie wykonane później, późniejonCreate
)Wolę korzystać z tego rozwiązania https://stackoverflow.com/a/35430590/4548520 niż https://stackoverflow.com/a/26506858/4548520, ponieważ jeśli zmienisz tytuł wiele razy (w różnych funkcjach), wygodniej jest z niego korzystać
mToolbar.setTitle()
niżgetSupportActionBar().setTitle()
jeden i nie widzisz denerwującego powiadomienia o zerowym wyjątku, jak zgetSupportActionBar().setTitle()
źródło
Dla każdego, kto musi skonfigurować tytuł za pomocą paska narzędzi jakiś czas po ustawieniu SupportActionBar (@sorianiv) ORAZ twój
Toolbar
jest w środkuCollapsingToolbarLayout
, przeczytaj to:Potem
źródło
Tytuł aplikacji nie będzie wyświetlany jako domyślny tytuł dla każdego działania, możesz wstawić inny tytuł dla każdego działania. W pliku aktywności poniżej programu onCreate wystarczy wkleić pojedynczy wiersz, aby ustawić tytuł,
Po prostu zmień tekst „Twój tytuł tutaj” na tekst.
źródło
Po prostu użyj tego w swoim adapterze, gdzie MainActivity to AppCompactActivity. Zadzwoń z dowolnego miejsca.
źródło
Zrobiłem to, używając -
źródło
post
jeśli zmieniasz tytuł w wątku interfejsu użytkownika, co moim zdaniem stanowi 90% przypadków.Jeśli używasz
CollapsibleToolbarLayout
razem zToolbar
tym, musisz ustawić tytuł w obu układachustaw swój pasek narzędzi jako pasek akcji w
onCreate
metodziePóźniej po prostu zaktualizuj tytuł paska narzędzi za pomocą
setTitle
metodyźródło
Spróbuj tego:
Kod XML
Kod Java
źródło
Jeśli Twoim celem jest ustawienie ciągu statycznego na pasku narzędzi, najłatwiejszym sposobem jest ustawienie etykiety aktywności w AndroidManifest.xml:
Pasek narzędzi otrzyma ten ciąg bez żadnego kodu. (działa dla mnie z bibliotekami v27).
źródło
Mam dziwne zachowanie, które może ci pomóc.
Działa, ale nie ma wpływu tylko na onCreate:
Spróbuj użyć tego w onCreate:
źródło
Aby zmienić tytuł dla każdej innej aktywności
źródło
źródło
Chociaż nie jest to bezpośrednio związane z tą konkretną konfiguracją, odkryłem, że usunięcie „CollapsingToolbarLayout” z mojego kodu XML, który owija mój pasek narzędzi wewnątrz AppBarLayout, sprawiło, że wszystko działało.
Więc to:
Zamiast tego:
Następnie ustawiam tytuł w elemencie działania onCreate, zanim zostanie wywołana funkcja setSupportActionBar ().
źródło
Można to zrobić ustawiając
android:label
atrybutAndroidManifest.xml
pliku w pliku:A następnie dodaj ten wiersz do onCreate ():
źródło
Dodaj tę opcję:
źródło
Odpowiedź znajduje się w dokumentacji (którą można znaleźć tutaj ):
To jest rozwiązanie, które naprawdę znalazłeś. Pomyślałem tylko o podaniu odniesienia do oficjalnej dokumentacji (którą najwyraźniej mało kto czyta).
źródło
W Kotlin możesz to zrobić:
źródło
Dzieje się tak, ponieważ używasz zarówno paska narzędzi Toolbar, jak i ActionBar. Teraz, gdy chcesz używać paska narzędzi jako paska akcji, pierwszą rzeczą, którą musisz zrobić, to wyłączyć pasek akcji dostarczony z dekoracją.
Najprostszym sposobem jest rozszerzenie motywu
Theme.AppCompat.NoActionBar
.źródło