2012-12-21 7 views
7

Czy istnieje sposób, aby programowo wykryć, czy obszar powiadomień znajduje się u góry ekranu, czy w prawym dolnym rogu (jak na większości tabletów)?Jak wykrywać pozycję obszaru powiadomień?

+1

To jest dobre pytanie, ale dlaczego? Jakie masz złe intencje na temat tej wiedzy? :-p – AedonEtLIRA

+4

Uwaga: aby nieco komplikować, Nexus 7 to tablet z powiadomieniami u góry, a nie u dołu po prawej. – FoamyGuy

+1

@FoamyGuy Przejdź konsystencję! – AedonEtLIRA

Odpowiedz

4

Powiadomienia są zawsze wyświetlane w pasku stanu 25dp-wysoki w górnej części wyświetlacza, wyjątkiem dla sw600 urządzeń (czyli najmniejszą szerokość w dowolnej orientacji jest 600dp patrz this blog post aby uzyskać więcej informacji) na poziomie API 11 (Honeycomb) do 16 (Jelly Bean przed MR1). Na tych urządzeniach w dolnej części wyświetlacza znajduje się "połączony pasek systemowy" o wysokości 48dp.

Najprostszym sposobem sprawdzenia tego jest kwalifikowane zasoby; to jest, umieść swój układ o najwyższym pasku stanu w layout/foo.xml, ale wtedy masz dolną wersję paska systemu w layout-sw600dp/foo.xml. W końcu, ponieważ te duże urządzenia korzystają teraz z górnego paska stanu Androida 4.2 (API 17), musisz powrócić do wersji paska stanu w wersji layout-sw600dp-v17/foo.xml.

Jeśli chcesz tylko wartość logiczną, która powie Ci, czy pasek stanu jest na górze, wymiany layout w powyższym przykładzie z values i umieść <bool> do to prawda z wyjątkiem values-sw600dp.