Czy ktoś wie, jak ustawić dopełnienie między ikoną główną ActionBar a tytułem?
android
android-actionbar
Alesqui
źródło
źródło
Odpowiedzi:
Dostosowałem odpowiedź Cliffusa i przypisałem logo do rysowania w mojej definicji stylu paska akcji, na przykład tak w res / style.xml:
Ten do rysowania wygląda jak ten Cliffusa (tutaj z domyślną ikoną uruchamiania aplikacji) w res / drawable / actionbar_space_between_icon_and_title.xml:
W pliku android_manifest.xml nadal możesz ustawić inną ikonę aplikacji (ikona programu uruchamiającego na „pulpicie”. W działaniach bez paska akcji widoczne są tutaj dowolne definicje logo).
źródło
EDYCJA : upewnij się, że ustawiłeś to do rysowania jako LOGO , a nie jako ikonę aplikacji, jak to zrobili niektórzy komentatorzy.
Po prostu utwórz plik XML do rysowania i umieść go w folderze zasobów „do rysowania” (bez jakiejkolwiek gęstości lub innej konfiguracji).
Ostatnim krokiem jest ustawienie tego nowego do rysowania jako logo w swoim manifeście (lub w obiekcie Actionbar w Twojej aktywności)
Powodzenia!
źródło
Miałem też podobny problem, w moim przypadku musiałem dynamicznie ustawiać tytuły każdej czynności w zależności od treści.
Więc to zadziałało dla mnie.
Jeśli chcesz tylko odstępów, jest to najłatwiejsze rozwiązanie, jakie przyszło mi do głowy.
źródło
app:titleMarginStart
atrybutu w formacie XML układu.W ten sposób mogłem ustawić wypełnienie między ikoną domu a tytułem.
Nie mogłem jednak znaleźć sposobu na dostosowanie tego za pomocą stylów ActionBar xml. Oznacza to, że następujący kod XML nie działa:
Jeśli jednak chcesz to osiągnąć za pomocą XML, te dwa linki mogą pomóc Ci znaleźć rozwiązanie:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(To jest rzeczywisty układ używany do wyświetlania ikony strony głównej na pasku akcji) https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
źródło
padding
, wydaje się, że używamarginEnd
od api 17 - co prawdopodobnie zepsuje to rozwiązanie. Zobacz moje poniżejJest to częste pytanie w Material Design, ponieważ możesz chcieć wyrównać tytuł paska narzędzi z zawartością fragmentu poniżej. Aby to zrobić, możesz zastąpić domyślne wypełnienie „12dp”, używając atrybutu contentInsetStart = „72dp” w układzie toolbar.xml, jak pokazano poniżej
toolbar.xml
Następnie w swojej aktywności zadzwoń
I kończysz z tym:
źródło
app:titleMarginStart="dimension"
bezpośrednie kierowanie na tytuł.contentInsetStart
wstawi odstęp między ikoną domu a tytułem, odpowiedź może przynajmniej tak powiedzieć. Mój test przed chwilącontentInsetStart
zdawał się umieszczać spację przed logo (co wprawdzie nie jest tym samym, co ikona domu).U mnie zadziałała tylko następująca kombinacja, testowana od API 18 do 24
gdzie w „aplikacji” jest:
xmlns:app="http://schemas.android.com/apk/res-auto"
na przykład.
źródło
Jeśli używasz paska narzędzi z AppCompat (android.support.v7.widget.Toolbar,> = wersja 24, czerwiec 2016), wypełnienie między ikoną a tytułem można zmienić za pomocą następującej wartości:
Aby poprawić moją odpowiedź, możesz użyć jej na pasku narzędzi bezpośrednio w swojej aktywności lub możesz utworzyć nowy plik układu dla swojego paska narzędzi. W takim przypadku wystarczy zaimportować @id paska narzędzi przy użyciu właściwości include w każdym z potrzebnych widoków.
Następnie możesz zaimportować układ do pliku activity.xml
źródło
U
titleMarginStart
mnie działa. Przykład platformy Xamarin:Ustaw logo w następujący sposób:
źródło
Użyłem \ t przed tytułem i pracowałem dla mnie.
źródło
Używam niestandardowego obrazu zamiast domyślnego tekstu tytułu po prawej stronie logo moich aplikacji. Jest to ustawione programowo, podobnie jak
Problemy z powyższymi odpowiedziami są dla mnie takie, że sugestia @ Cliffusa nie działa dla mnie z powodu problemów, które inni nakreślili w komentarzach i chociaż ustawienie dopełnienia programowego @dushyanth mogło działać w przeszłości, myślę, że fakt, że odstępy są teraz ustaw za pomocą
android:layout_marginEnd="8dip"
od API 17, ręczne ustawienie wypełnienia nie powinno mieć żadnego efektu. Zobacz link, który zamieścił w git, aby zweryfikować jego aktualny stan.Prostym rozwiązaniem dla mnie jest ustawienie ujemnego marginesu na moim niestandardowym widoku w ActionBar, w ten sposób
android:layout_marginLeft="-14dp"
. Szybki test pokazuje, że działa u mnie na 2.3.3 i 4.3ActionBarCompat
Mam nadzieję, że to komuś pomoże!
źródło
Rozwiązałem ten problem, używając niestandardowego układu nawigacji
Używając go, możesz dostosować wszystko w tytule na pasku akcji:
build.gradle
AndroidManifest.xml
style.xml
action_bar.xml
źródło
Miałem podobny problem, ale z odstępami między górną a niestandardową ikoną / logo aplikacji na pasku akcji. Rozwiązanie Dushyantha polegające na programowym ustawianiu dopełnienia zadziałało dla mnie (ustawienie dopełnienia na ikonie aplikacji / logo). Próbowałem znaleźć android.R.id.home lub R.id.abs__home ( tylko ActionBarSherlock , ponieważ zapewnia to kompatybilność wsteczną) i wydaje się, że działa na urządzeniach 2.3-4.3, na których testowałem.
źródło
W moim przypadku to z Toolbar rozwiązałem w ten sposób:
ic_toolbar_drawble.xml
W moim fragmencie sprawdzam interfejs API:
Powodzenia!
źródło
Możesz zmienić drawableSize swojej DrawerArrow w następujący sposób:
To nie jest prawidłowa odpowiedź, ponieważ nie możesz wybrać strony wypełnienia i skalowania ikony DrawerArrow po zmianie drawableSize (drawableSize = width = height). Ale możesz zrobić margines od lewej strony. Zrób margines od prawej
źródło
Użyłem tej metody
setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)
i działa!źródło
Gdy używasz niestandardowego paska narzędzi, możesz użyć
a w układzie paska narzędzi po prostu ustaw
app:titleMarginStart="16dp"
Pamiętaj, że musisz ustawić ikonę jako logo, nie używaj
getSupportActionBar().setIcon(R.drawable.logo)
zamiast tego:getSupportActionBar().setLogo(R.drawable.logo)
źródło
Użyłem
AppBarLayout
iImageButton
robię to na zamówienie .Mój kod Java:
źródło
Możesz również osiągnąć to samo metodą:
źródło
W pliku XML ustaw
app:titleMargin
widok paska narzędzi w następujący sposób:Lub w swoim kodzie:
źródło
ta praca dla mnie, aby dodać dopełnienie do tytułu, a dla
ActionBar
ikony ustawiłem to programowo.źródło
Po prostu dodaj
" "
nazwę aplikacji. Doda spację między ikoną a tytułemźródło