Używam niestandardowego widoku paska akcji i jak widać na zrzucie ekranu poniżej, na pasku akcji jest pusta szara przestrzeń. Chcę to usunąć.
Co ja zrobiłem:
res / wartości-v11 / styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
res / wartości / my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
Oczywisty
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Główna aktywność
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
Znalazłem ostatni post, który wskazuje, że jest problem z najnowszą wersją. Zaktualizowałem także ADT i SDK do Androida 5.
Niestandardowy widok Androida ActionBar nie wypełnia elementu nadrzędnego
Nie wiem co powinienem zrobić.
Edycja (rozwiązanie częściowe):
Nie działa na Androidzie <= API 10.
Android Lollipop, niestandardowy widok AppCompat ActionBar nie zajmuje całej szerokości ekranu
Co zmieniłem:
Użyj najnowszej wersji SDK:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Dodaj toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
android
xml
android-actionbar-compat
Zbarcea Christian
źródło
źródło
Odpowiedzi:
Jeśli dodajesz za
Toolbar
pośrednictwem XML, możesz po prostu dodać atrybuty XML, aby usunąć wstawki zawartości.źródło
android.support.v7.widget.Toolbar
:app:contentInsetStartWithNavigation="0dp"
Spróbuj tego:
Użyłem tego kodu w moim projekcie, powodzenia;
źródło
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
zamiast pompować układ.parent.setPadding(0, 0, 0, 0);
do tabletówLewa wstawka jest spowodowana przez pasek narzędzi Toolbar,
contentInsetStart
który domyślnie ma 16dp.Zmień to, aby wyrównać do linii horyzontu.
Aktualizacja dla biblioteki wsparcia v24.0.0:
Aby dopasować specyfikację Material Design, istnieje dodatkowy atrybut,
contentInsetStartWithNavigation
który domyślnie wynosi 16dp. Zmień to, jeśli masz także ikonę nawigacji.Okazało się, że jest to część nowej specyfikacji projektowania materiałów wprowadzonej w wersji 24 biblioteki Design.
https://material.google.com/patterns/navigation.html
Można jednak usunąć dodatkową przestrzeń, dodając następującą właściwość do widżetu paska narzędzi Toolbar.
Przed :
Po :
źródło
Znalazłem inną rozdzielczość (referencja appcompat-v7), która zmienia pasek narzędzi Toolbar, następujący kod:
źródło
To powinno wystarczyć.
źródło
Po prostu zmodyfikuj plik styles.xml
źródło
Zamiast dodawać pasek narzędzi w układzie, możesz ustawić własny widok, jak pokazano poniżej.
źródło
Tylko dodaj
app:contentInsetStart="0dp"
do paska narzędzi, aby usunąć to wolne miejsce.Twoja definicja paska narzędzi wygląda tak
i tak to wygląda
źródło
Używając
AppCompatAcitivty
możesz użyć tylko przezźródło
Musisz dodać ten wiersz app2: contentInsetStart = "0dp" na pasku narzędzi
źródło
app:contentInsetStart="0dp"
Nigdzie nie znalazłem rozwiązania dla mojego problemu (pierwsze zdjęcie), ale w końcu po kilku godzinach kopania ostatecznie znalazłem najprostsze rozwiązanie. Pamiętaj, że próbowałem z wieloma atrybutami XML, takimi jak
app:setInsetLeft="0dp"
itp., Ale żaden z nich nie pomógł w tym przypadku.Obrazek 1
poniższy kod rozwiązał ten problem, jak na zdjęciu 2
Zdjęcie 2
źródło
Ustawienie atrybutów „contentInset ...” na 0 na pasku narzędzi nie działało dla mnie. Udało się rozwiązanie Nilesha Senty do aktualizacji stylu!
styles.xml
java (onCreate)
źródło
Utwórz pasek narzędzi w ten sposób:
kliknij ten link, aby uzyskać więcej - Wskazówki dotyczące Androida
źródło
tylko dodawanie
android:padding="0dp"
pracy dla mnieźródło
źródło
Możesz po prostu użyć układu względnego w grupie widoków paska narzędzi w pliku xml i dopasować pozycje widżetów, tak jak potrzebujesz w przypadku użycia. Nie musisz tworzyć niestandardowego układu i nadmuchać go i dołączyć do paska narzędzi. Po zakończeniu w kodzie java użyj setContentInsetsAbsolute (0,0) z obiektem paska narzędzi przed ustawieniem go jako paska akcji wsparcia w twoim układzie.
źródło
Lepiej byłoby dodać element tła do stylu paska akcji aplikacji, aby był zgodny z kolorem tła dostosowanego paska akcji:
Po Androidzie 6.0 pasek akcji ma nawet margines po prawej stronie i nie można go ustawić. Dodaj prawy margines dostosowując działanie w następujący sposób: ( widok to dostosowany pasek akcji lub prawy przycisk w nim)
Machenizm paska działań jest obsługiwany po aplikacji na Androida 3.0+. Jeśli zamiast tego użyjemy paska narzędzi (wsparcia lib v7), powinniśmy go ułożyć w każdym pliku xml każdej aktywności i zająć się problemem nakładania się paska stanu systemu na urządzeniu z Androidem 5.0 lub nowszym.
źródło
Kotlin
źródło
ta praca dla mnie
źródło
Jeśli sprawdzisz dokumentację paska narzędzi, domyślnie ma on zdefiniowany styl i istnieje element contentInsetStart.
Jeśli chcesz zastąpić to wypełnienie, możesz to zrobić na dwa sposoby.
1. Zastąp styl i dodaj własny styl z wartościami contentInsetStart i contentInsetEnd
2. W XML można bezpośrednio zdefiniować wartości contentInsetStart i contentInsetEnd
źródło
Czy Twoja aplikacja obsługuje Androida 5? Jeśli nie obsługuje, możesz obniżyć wersję paska pomocy wsparcia v7. To wygląda jak:
także spraw, aby docelowa wersja aplikacji była mniejsza niż 21.
Jeśli Twoja aplikacja obsługuje system Android 5 ->, potrzebujesz niestandardowego paska narzędzi. (Becuase appcombat-v7: 21 ma pewne zmiany).
źródło