Właśnie zaktualizowałem moją bazę kodu do Lollipopa i mam problemy z paskiem akcji. Używam AppCompat i ActionBarActivity oraz napompowania widoku niestandardowego. Wygląda na to, że niestandardowy widok nie zajmuje już całej szerokości ekranu, pozostawiając cienki pasek po lewej stronie
Tak jak kiedyś wyglądało
Tak to wygląda teraz
To jest kod, którego używam do ustawienia paska akcji. Czy ktoś ma jakieś pomysły?
final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
actionBar.setBackgroundDrawable(null);
// actionBar.setStackedBackgroundDrawable(null);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
title.setText(R.string.youtube);
ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
Edytować
Usunięcie widoku niestandardowego i zmiana tła zajmuje teraz całą szerokość. Problem w tym, w jaki sposób możemy sprawić, by CustomView zajmował całą szerokość ActionBar?
android
android-actionbar
android-appcompat
android-5.0-lollipop
Stevie Kideckel
źródło
źródło
appcompat-v7
.ImageView
. Spróbuj go wyłączyć na początek.Odpowiedzi:
Wygląda na to, że jest to spowodowane ostatnimi zmianami
ActionBar
w ostatniejappcompat-v7
aktualizacji. Wygląda na to, że zaszły znaczące zmiany w sposobie obsługi pasków akcji.Napotkałem ten sam problem i po przeczytaniu
ActionBar
dokumentacji , a zwłaszcza poniższego cytatu znalazłem rozwiązanie.Sposób, w jaki to widzę,
AppCompat
zmienił się temat i z jednej strony wydawał się zepsuć kilka rzeczy, z drugiej zapewniał dużo większą elastyczność. Polecam następujące kroki:.NoActionBar
stylu w swojej działalności, jak opisano w powyższym cytacieandroid.support.v7.widget.Toolbar
do swojego układu działaniaapp:contentInsetStart="0dp"
atrybut. To jest główny problem związany z marginesem, który opisujesz w swoim pytaniuZwykle zaleca się zrobienie tego w oddzielnym pliku układu i użycie
include
w układzie działania, więc wystarczy dostosować pasek narzędzi w jednym miejscu, jeśli jest używany w wielu działaniachfindViewById
isetSupportActionBar
w swojej aktywności,onCreate
abysignal to the Activity which Toolbar should be treated as the Activity's action bar
onCreateOptionsMenu
zostaną dodane do paska narzędzi i będą traktowane jako pasek działań.źródło
Error inflating class fragment
xmlns:app="http://schemas.android.com/apk/res-auto"
setCustomView
. Po prostu zbuduj plik układu z widżetami, które chcesz dołączyć do paska narzędzi (np. Dodaj widoki potomne do pliku układu opisanego w sekcji 3 odpowiedzi)Zamiast wykonywać tyle pracy, o czym wspomniał Muzikant i polubić tę odpowiedź
Aby rozwiązać problem, musisz dodać tylko ostatnie dwie linie kodu.
Mam nadzieję, że to pomoże tobie i komukolwiek innemu.
Dodaj te cztery wiersze do powyższego kodu, tak aby prawy boczny odstęp został również usunięty z paska akcji wsparcia.
źródło
Myślę, że możesz to również zrobić w stylach. Spróbuj tego. przetestowałem to na KitKacie
źródło
Żadna z innych odpowiedzi nie działała dla mnie, więc przyjrzałem się rzeczywistym stylom AppCompat v7, które znajdziesz tutaj .
Jeśli spojrzysz na styl Base.Widget.AppCompat.ActionBar, ma:
Więc oczywiście musimy po prostu zastąpić te właściwości naszym własnym stylem paska akcji:
To zadziałało świetnie dla mnie, mam nadzieję, że pomoże też innym.
źródło
Po wielu uderzeniach głową w monitor, to zadziałało
GetCustomView (). GetParent () jest tym, co załatwiło sprawę
źródło
Właśnie dzisiaj napotkałem ten problem, a potem dowiedziałem się, że mam
res/values-v21/styles.xml
wewnątrz projekt, który został wygenerowany automatycznie przez Android Studio i to jest przyczyna.Czemu?
Ponieważ moja
res/values-v21/styles.xml
zawartość to:A mój
res/values/styles.xml
zawierał coś takiego:Następnie, kiedy uruchomiłem moją aplikację na Lollipop,
res/values-v21/styles.xml
został użyty, co spowodowało dokładny problem, który miał OP. Więc doszedłem do prostej poprawki, która polega na usunięciu:w
res/values-v21/styles.xml
źródło
do momentu:
upewnij się, że importujesz odpowiedni pasek narzędzi -
android.support.v7.widget.Toolbar;
źródło
Napisz te dwie linie w dodatku do swojego kodu
źródło