Myślę, że nie ma potrzeby używania niestandardowego tytułu, aby zmienić kolor tła na pasek tytułu. sprawdź ten post
Deepthi Jabili
Spojrzałbym na odpowiedź Edwinfada zamiast na nieaktualną, zaakceptowaną.
zgc7009
Odpowiedzi:
186
Ten wątek pozwoli Ci rozpocząć tworzenie własnego paska tytułu w pliku xml i używanie go w swoich działaniach
Edytować
Oto krótkie podsumowanie zawartości powyższego linku - służy to tylko ustawieniu koloru tekstu i tła paska tytułu - bez zmiany rozmiaru, bez przycisków, tylko najprostsza próbka
res / layout / mytitle.xml - To jest widok, który będzie reprezentował pasek tytułu
<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myTitle"android:text="This is my new title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textColor="@color/titletextcolor"/>
res / values / themes.xml - Chcemy zachować domyślny motyw Androida i wystarczy zmienić kolor tła tytułu. Dlatego tworzymy motyw, który dziedziczy motyw domyślny i ustawiamy styl tła na nasz własny styl.
W większości przypadków samo podanie linku jest bardzo tanie, a na przepływie stosów odpowiedź nie jest zbyt podobna. Spróbuj uzyskać część wiedzy z linku na tej stronie. Będziesz zdobywać coraz większą wiedzę w społeczności, a nawet jeśli link jest wyłączony, odpowiedź nadal zawiera pewne wyszukiwane hasła, które mogą skierować inne osoby w odpowiednim kierunku.
Janusz
7
@Janusz: Masz całkowitą rację - zaktualizowałem więc post z najprostszą próbką, aby ludzie mogli zacząć zamiast czytać wątek w powyższym linku
ccheneson
3
Po nadpisaniu stylizacji Androida nie musisz dodawać własnego tytułu z kodu, jeśli chcesz tylko zmienić kolor tła
Janusz
1
Jak powiedział Janusz, nie musisz mieć własnego widoku, jeśli chcesz tylko nadpisać używany styl (nie dodawać nowych widoków). W takim przypadku nie musisz też prosić o FEATURE_CUSTOM_STYLE. Na koniec możesz zdefiniować styl i poziom aplikacji, aby zastosować go do wszystkich działań jednocześnie. Nawiasem mówiąc, dzięki za kod.
Eric Kok
2
nie zmienia to koloru tła tytułu, zmienia się tylko kolor tekstu. nawet jeśli zmieniam kolor paska tytułu <color name = "titlebackgroundcolor"> # 3232CD </color>. czy robię coś źle?
Shaista Naaz
18
Dziękuję za to jasne wyjaśnienie, jednak chciałbym dodać trochę więcej do Twojej odpowiedzi, zadając pytanie z linkiem (nie chcę pisać nowego postu, ponieważ ten jest podstawą mojego pytania).
Deklaruję, że mój pasek tytułowy w superklasie, z której wszystkie moje zajęcia są dziećmi, musi zmienić kolor paska tylko raz. Chciałbym też dodać ikonę i zmienić tekst w pasku. Zrobiłem kilka testów i udało mi się zmienić jedno lub drugie, ale nie oba w tym samym czasie (używając setFeatureDrawable i setTitle). Idealnym rozwiązaniem byłoby oczywiście podążanie za wyjaśnieniem w wątku podanym w linku, ale jak deklaruję w nadklasie, mam problem z układem w setContentView i R.id.myCustomBar, ponieważ jeśli i dobrze pamiętam, mogę wywołać setContentView tylko raz ...
EDYTUJ
Znaleziono moją odpowiedź:
Dla tych, którzy, tak jak ja, lubią pracować z nadklasami, ponieważ świetnie nadaje się do uzyskania menu dostępnego w każdym miejscu w aplikacji, tutaj działa tak samo.
Istnieje inny sposób zmiany koloru tła, jednak jest to hack i może się nie powieść w przyszłych wersjach Androida, jeśli zmieni się hierarchia widoku okna i jego tytuł. Jednak kod się nie zawiesza, wystarczy pominąć ustawienie żądanego koloru, w takim przypadku.
W swojej aktywności, podobnie jak onCreate, wykonaj:
bardzo dobry i prosty. Ale chcę cię zapytać o jedną rzecz, że ten robi to z kodu, więc jest trochę opóźniony. Żeby uniknąć takiej sytuacji będę musiał napisać wszystko w xml i nic w kodzie. więc czy możesz mnie w tym poprowadzić?
Shaista Naaz
Myślę, że masz rozwiązanie w wybranej odpowiedzi powyżej. Musisz zdefiniować motyw niestandardowy dla działania i ustawić jego android: windowTitleBackgroundStyle na żądany kolor.
mikeplate
7
Ten kod pomaga programowo zmienić tło paska tytułu w systemie Android. Zmień kolor na dowolny.
Zostało to wprowadzone w API 11 (3.0 Honeycomb), które z pewnością jest na tyle przestarzałe w tym momencie, aby uznać to za ważną opcję.
zgc7009
Ale nadal używam go we wszystkich moich ostatnich aplikacjach z targetSdkVersion = "23" bez uzyskiwania informacji przestarzałych.
Edwinfad
Absolutnie jest to w 100% w porządku. Nie został on niczym zastąpiony, ale należy unikać używania go przed API 11 (co robi bardzo niewiele osób), przynajmniej bez biblioteki kompatybilności.
zgc7009
Odnotowany. @ zgc7009
Edwinfad
1
Zamiast tego użyj getSupportActionBar (), jeśli używasz AppCompatActivity
Jak / gdzie mogę stworzyć własny / własny pasek tytułu?
Thizzer
2
Rzuć okiem platforms/android-2.1/data/res/layout/screen.xmlna SDK. Wydaje się, że definiuje tam tytuł. Możesz często sprawdzać takie układy i pożyczać
style="?android:attr/windowTitleStyle"
style, których możesz następnie używać i nadpisywać we własnych TextViews.
Możesz nawet wybrać tytuł do bezpośredniego dostosowania, wykonując:
TextView title =(TextView)findViewById(android.R.id.title);
Wydaje się, że od czasu Androida 5.0 (poziom interfejsu API 21) sytuacja się poprawiła / łatwiej.
Myślę, że szukasz czegoś takiego:
<stylename="AppTheme"parent="AppBaseTheme"><!-- Top-top notification/status bar color:--><!--<item name="colorPrimaryDark">#000000</item>--><!-- App bar color:--><item name="colorPrimary">#0000FF</item></style>
Odpowiedzi:
Ten wątek pozwoli Ci rozpocząć tworzenie własnego paska tytułu w pliku xml i używanie go w swoich działaniach
Edytować
Oto krótkie podsumowanie zawartości powyższego linku - służy to tylko ustawieniu koloru tekstu i tła paska tytułu - bez zmiany rozmiaru, bez przycisków, tylko najprostsza próbka
res / layout / mytitle.xml - To jest widok, który będzie reprezentował pasek tytułu
res / values / themes.xml - Chcemy zachować domyślny motyw Androida i wystarczy zmienić kolor tła tytułu. Dlatego tworzymy motyw, który dziedziczy motyw domyślny i ustawiamy styl tła na nasz własny styl.
res / values / styles.xml - w tym miejscu ustawiamy motyw tak, aby używał żądanego koloru tła tytułu
res / values / colors.xml - Ustaw tutaj żądany kolor
W AndroidMANIFEST.xml ustaw atrybut motywu w aplikacji (dla całej aplikacji) lub w tagach działania (tylko to działanie)
Z działania (o nazwie CustomTitleBar):
źródło
Dziękuję za to jasne wyjaśnienie, jednak chciałbym dodać trochę więcej do Twojej odpowiedzi, zadając pytanie z linkiem (nie chcę pisać nowego postu, ponieważ ten jest podstawą mojego pytania).
Deklaruję, że mój pasek tytułowy w superklasie, z której wszystkie moje zajęcia są dziećmi, musi zmienić kolor paska tylko raz. Chciałbym też dodać ikonę i zmienić tekst w pasku. Zrobiłem kilka testów i udało mi się zmienić jedno lub drugie, ale nie oba w tym samym czasie (używając setFeatureDrawable i setTitle). Idealnym rozwiązaniem byłoby oczywiście podążanie za wyjaśnieniem w wątku podanym w linku, ale jak deklaruję w nadklasie, mam problem z układem w setContentView i R.id.myCustomBar, ponieważ jeśli i dobrze pamiętam, mogę wywołać setContentView tylko raz ...
EDYTUJ Znaleziono moją odpowiedź:
Dla tych, którzy, tak jak ja, lubią pracować z nadklasami, ponieważ świetnie nadaje się do uzyskania menu dostępnego w każdym miejscu w aplikacji, tutaj działa tak samo.
Po prostu dodaj to do swojej superklasy:
(musisz zadeklarować textview jako chronioną zmienną klasową)
Siła tego polega na tym, że wszędzie w aplikacji (jeśli na przykład wszystkie Twoje zajęcia są dziećmi tej klasy), wystarczy zadzwonić
a twój pasek tytułowy zostanie edytowany.
XML skojarzony w moim przypadku to (R.layout.customtitlebar):
źródło
Istnieje inny sposób zmiany koloru tła, jednak jest to hack i może się nie powieść w przyszłych wersjach Androida, jeśli zmieni się hierarchia widoku okna i jego tytuł. Jednak kod się nie zawiesza, wystarczy pominąć ustawienie żądanego koloru, w takim przypadku.
W swojej aktywności, podobnie jak onCreate, wykonaj:
źródło
Ten kod pomaga programowo zmienić tło paska tytułu w systemie Android. Zmień kolor na dowolny.
źródło
na powyższym kodzie możesz spróbować użyć tytułu zamiast paska tytułu , wpłynie to na całą aktywność w Twojej aplikacji
źródło
Chyba nie. Możesz tworzyć działania bez tytułów i tworzyć własne paski tytułu w układzie działań.
Sprawdź to , wiersz 63 i poniżej:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
ustawia widok niestandardowy zamiast domyślnego widoku tytułu.
źródło
Rzuć okiem
platforms/android-2.1/data/res/layout/screen.xml
na SDK. Wydaje się, że definiuje tam tytuł. Możesz często sprawdzać takie układy i pożyczaćstyle="?android:attr/windowTitleStyle"
style, których możesz następnie używać i nadpisywać we własnych TextViews.Możesz nawet wybrać tytuł do bezpośredniego dostosowania, wykonując:
źródło
Spróbuj z następującym kodem
również użyj tego linku, jego bardzo przydatny: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/
źródło
Istnieje łatwiejsza alternatywa zmiany koloru paska tytułu, korzystając z biblioteki obsługi zgodności aplikacji v7 dostarczonej przez Google.
Zobacz ten link, aby dowiedzieć się, jak skonfigurować tę bibliotekę pomocy: https://developer.android.com/tools/support-library/setup.html
Gdy to zrobisz, wystarczy dodać następujące wiersze do pliku res / values / styles.xml:
(zakładając, że "titlebackgroundcolor" jest zdefiniowany w twoim res / values / colors.xml, np .:
)
źródło
Wydaje się, że od czasu Androida 5.0 (poziom interfejsu API 21) sytuacja się poprawiła / łatwiej.
Myślę, że szukasz czegoś takiego:
Zobacz tutaj w celach informacyjnych:
https://developer.android.com/training/material/theme.html#ColorPalette
źródło
Zrobiłem to, zmieniając wartości kolorów stylu w „res” -> „values” -> „colors.xml”
To zmieni kolory dla całego projektu, co mi odpowiada.
źródło
możesz tego użyć.
źródło
Wklej ten kod po setContentView lub do onCreate
jeśli masz kod koloru, użyj tego;
jeśli chcesz mieć określony kod z biblioteki Color, użyj tego;
źródło