Панель навигации
В Android 4.0 (точнее в Android 3.0) появилась новая панель навигации. Рассмотрим несколько примеров взаимодействия с этой панелью. Как включить панель навигации в эмуляторе написано здесь.
Следует обратить внимание на следующие вещи. Первое — поведение панели навигации на планшетах под управлением Android 3.0 немного отличается от панели навигации для устройств под управлением Android 4.0 и представленный код может не работать. Второй момент — многие брендированные телефоны имеют собственную прошивку, в которой не предусмотрена панель навигации. Яркий пример — мой Galaxy SII. Учитывайте эти факты при разработке своих приложений.
Прячем системные кнопки навигации
Чтобы скрыть системную панель навигации с кнопками Home, Back, можно использовать код:
getWindow(). getDecorView(). setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Этот способ подойдёт для игр, читалок и прочих приложений, где системная панель занимает лишнее пространство. Панель не удаляется, а просто скрывается из виду. Когда пользователь нажмёт на экран в той позиции, где находится данная панель, то она автоматически появится.
Прячем или затемняем панель навигации
Способов управления панелью навигации не так уж и много. Точнее их всего три. Мы можем скрыть панель или затемнить её (рекомендуется использовать в играх, чтобы не отвлекала). Управляется поведение панели при помощи метода setSystemUiVisibility(), который применим к элементам View. Например, мы можем запустить приложение с скрытой панелью, но как только мы коснёмся экрана (приложение получит фокус), то панель сразу появится. Для эффекта затемнения мы приготовим кнопку. Третий способ показа панели использовать не будем, так как она и так появляется без явного вызова метода.
Для начала создадим разметку приложения с большой картинкой. Наверное, удобно было бы, если при запуске панель навигации не выводилась сразу, чтобы можно было рассмотреть картинку получше.
package ru.alexanderklimov.navigationbar; import . public class NavBarAppActivity extends Activity < ImageView myImageView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.main); myImageView = (ImageView) findViewById(R.id.myimageview); // прячем панель навигации при запуске myImageView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); >public void onClick(View v) < // затемняем панель навигации myImageView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); >>
В результате, при запуске панель будет скрыта, при нажатии на экран панель появится, а при щелчке на кнопку панель станет менее заметной.
Если говорить о затемнении, то приглушается не только панель навигации, но и строка состояния над заголовком, чтобы усилить фокус на самом приложении. Перепишем код для включения/выключения эффекта
public void onClick(View v) < int currentVis = v.getSystemUiVisibility(); int newVis; if ((currentVis & View.SYSTEM_UI_FLAG_LOW_PROFILE) == View.SYSTEM_UI_FLAG_LOW_PROFILE) < newVis = View.SYSTEM_UI_FLAG_VISIBLE; >else < newVis = View.SYSTEM_UI_FLAG_LOW_PROFILE; >v.setSystemUiVisibility(newVis); >
Сначала мы узнаём текущие настройки с помощью метода getSystemUiVisibility(), а затем устанавливаем новые настройки.


Кстати, вы заметили, что на картинке два кота? Эх, вы. (источник)
При затемнении и скрытии мы использовали элемент ImageView в качестве компонента, который управляет флагами видимости. Сейчас в официальной документации используется другой пример, когда используется объект View, получаемый через метод getWindow().getDecorView(), хотя в комментариях говорится, что можно использовать и старый способ. Сейчас мы рассмотрим этот пример, заодно покажу, как сбросить все флаги. Для примера достаточно двух кнопок.
package ru.alexanderklimov.test; import . public class MainActivity extends Activity < View decorView; int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility(uiOptions); >// Щелчок первой кнопки public void onClick(View v) < decorView.setSystemUiVisibility(uiOptions); >// Щелчок второй кнопки public void onClick2(View v) < // вызов setSystemUiVisibility() с значением 0 // очистит все флаги decorView.setSystemUiVisibility(0); >>
При нажатии первой кнопки панель навигации и строка состояния затемнятся, а при нажатии на вторую кнопку снова появятся.
Прячем строку состояния
Отталкиваясь от последнего примера, рассмотрим случай, когда мы хотим скрыть строку состояния, чтобы получить приложение на весь экран. Для этого нам нужно использовать флаг SYSTEM_UI_FLAG_FULLSCREEN. Такой способ рекомендуется использовать на Android 4.1 и выше. Пример для старых версий описывать не буду, ищите в документации.
public void onClick(View v) < // во весь экран decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); >
После нажатия на кнопку, самая верхняя полоска исчезнет и заголовок приложения сдвинется вверх.
Если хотите скрыть и заголовок приложения, то добавьте ещё две строчки кода:
// При необходимости можете скрыть и заголовок приложения ActionBar actionBar = getActionBar(); actionBar.hide();
Можно объединять флаги, например, можем скрыть панель навигации и строку состояния одновременно:
public void onClick(View v) < int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; // прячем панель навигации и строку состояния decorView.setSystemUiVisibility(uiOptions); >
Следует помнить, что любое нажатие в области экрана заставит появиться панель навигации и строку состояния снова. Также имейте в виду, что когда пользователь нажмёт на кнопку HOME, а потом вернётся в ваше приложение, то панель и строка состояния будут видны, если вы расположение метод скрытия в метод onCreate(), который просто не сработает при возвращении. Поэтому используйте методы onResume() или onWindowFocusChanged().
Перекрыть разметку
По умолчанию Панель действий размещается в верхней части активности, а сама разметка активности находится под панелью. Можно переопределить это поведение, когда панель будет накладываться на разметку:
// onCreate() getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); setContentView(R.layout.activity_main);
Убрать панель с названием приложения при редактировании лаяута
Подскажите как можно избавится от bar-а где написано название приложения именно при редактировании лаяута. Так как если использовать (requestWindowFeature(Window.FEATURE_NO_TITLE) то заголовок пропадает при запуске приложения и соответственно весь дизайн плывет съезжая вверх.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как убрать панель пуска и панель с названием программы?
как убрать панель пуска и панель с названием проги хочу сделать типа windows 8 отметил на.
Убрать предупреждении при редактировании реквизита справочника
Вот процедура, которая не допускает повторный ввод артикула номенклатуры справочника: &НаСервере.
Убрать панель инструментов при загрузке страницы
Подсажите, пож., а можно, чтобы у страницы при загрузке убиралась панель инструментов?
Панель выбора ОС при загрузке. Как убрать?
Добрый день! На машине стояли 2 ОС — Windows 98 SE и Windows XP Prof. Я установил одну Windows.
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
Регистрация: 20.04.2013
Сообщений: 666
Сообщение от V0v1k 
http://stackoverflow.com/questions/2. g-custom-theme
эта статья не ответила на мой вопрос. Испробовал разные моменты, в частности решенный ответ:
1 2 3
style name="generalnotitle" parent="general"> item name="android:windowNoTitle">true/item> /style>
но не работает подчеркивает parent=»general»> и говорит нем может её использовать.
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
вместо генерал нужно вписать стиль от которого вы хотите наследоваться.
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
В Манифесте
1 2 3 4
android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar">
Регистрация: 20.04.2013
Сообщений: 666
Спасибо всем за советы, но оказалось всё ещё проще. При работе с лаяутом а именно XML разметкой, рядом с выбором горизонтальной или вертикальной разметкой есть кнопка для выбора тема, там их огромное множество. Так кот именно здесь необходимо выбрать тему noTitleBar и всё — панелька пропадает! И не надо нигде ничего создавать дополнительно.
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
кнопками не пользуюсь, все ручками.
Регистрация: 20.04.2013
Сообщений: 666
Сообщение от V0v1k 
кнопками не пользуюсь, все ручками.
так а в xml без кнопок и не решить проблему.
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
те изменения которые были внесены при нажатии кнопки всегда можно внести самостоятельно.
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
Сообщение от Stylish2013 
Так кот именно здесь необходимо выбрать тему noTitleBar и всё — панелька пропадает! И не надо нигде ничего создавать дополнительно.
После этого у вас эта тема и осталась?
Регистрация: 20.04.2013
Сообщений: 666
Сообщение от Digetix 
После этого у вас эта тема и осталась?
эта тема для моего приложения нигде не применилась, только конкретно к тому лаяуту при просмотре его в xml.
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
Я думал, что эти кнопочки работают только если предварительно посмотреть как выглядит тема, а выставлять её нужно в манифесте
Регистрация: 20.04.2013
Сообщений: 666
Сообщение от Digetix 
Я думал, что эти кнопочки работают только если предварительно посмотреть как выглядит тема, а выставлять её нужно в манифесте
Так так оно и получается на деле, посмотрел и всё, а если хочешь такую тему прописывай в манифесте. А кнопка удобна тем чтобы легко было редактировать в xml.
Регистрация: 19.02.2013
Сообщений: 2
Вопрос немножко не в тему, но может кто подскажет как решить проблемку: в приложении убран тайтлбар используя requestWindowFeature(Window.FEATURE_ NO_TITLE); но в приложении ещё есть главное меню. На тайтлбаре кнопочка менюшки была и если в телефоне нет кнопки «меню» то можно было воспользоваться ей, а вот как быть если заголовок убран? Ну кнопочку руками сделать не проблема, но вот в некоторых приложениях видел что эта самая кнопочка с татйлбара перекочевала на панельку виртуальных кнопок (не знаю как правильна она называется). Может кто подскажет как это реализуется?
Регистрация: 28.08.2014
Сообщений: 179
Так она пропадает в графическом отображении лояута , а в коде ничего не меняется .
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Нужно убрать выпадающую панель-список(которая выскакивает при выборе).
Здравствуйте. Столкнулся с "мистической" ситуацией, работая с JComboBox. Дело в следующем: Моей.

Visual Studio Community как убрать панель на приложении при Debug’e?
Вот эту черную штуку как убрать?

При запуске приложения появляется встроенная панель от windows
Доброго времени суток форумчане, при старте приложения появляется вот эта панель, как ее отключить?
Убрать уведомление при выходе из приложения
Привет, нужно удалить уведомление при закрытие приложения. как это сделать? так же на кнопку Home.
Как убрать стандартную верхнюю панель с названием проекта?

Принципиальный пунктик в этом — порядок строк должен быть именно таким. Между ними могут быть другие строки, но порядок не менять.
23 апр 2012 в 7:39
@android:style/Theme.NoTitleBar" />
добавить в манифесте
Отслеживать
ответ дан 23 апр 2012 в 7:24
12.4k 1 1 золотой знак 20 20 серебряных знаков 43 43 бронзовых знака
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как изменить строку состояния на Андроиде, настройка верхней панели
Интерфейс каждого смартфона на Android состоит из множества элементов. Каждый из них имеет определенное место и предназначается для конкретных целей. Вместе с тем смысл некоторых элементов остается непонятен рядовому пользователю. В частности, о таком компоненте, как строка состояния на операционной системе Андроид, многие слышали, но не все понимают ее значимость. Разберем функциональность этого элемента, а также тонкости его настройки.
Что это такое и где находится

Строка состояния (Status Bar) – это область уведомлений, расположенная в верхней части экрана. Некоторые пользователи путают ее с центром уведомлений, который вызывается свайпом сверху вниз, однако это два разных элемента интерфейса. Строка показывает различные иконки, демонстрирующие главную информацию, которая может понадобиться владельцу смартфона вне зависимости от сценария использования устройства. По умолчанию здесь можно увидеть:
- текущее время;
- заряд аккумулятора;
- качество приема сети;
- тип подключения (например, 3G или 4G).
Опционально здесь появляются другие значки. К примеру, пользователь может настроить отображение статистики потребления трафика. А еще в строке состояния появляются иконки в зависимости от подключенных интерфейсов. Так, здесь можно встретить значки:
- Wi-Fi;
- будильника;
- Bluetooth;
- беззвучного режима;
- режима «В самолете».
Наличие той или иной иконки свидетельствует об активности определенного режима. Так, если вы видите в строке состояния изображение в виде часов – значит, у вас настроен будильник. Соответственно, значок Bluetooth будет говорить об активности этого датчика, а изображение самолете символизирует включение одноименного режима связи.

Как убрать?
Несмотря на то, что верхняя строчка является важным элементом интерфейса Андроид, некоторым пользователям она мешает. К сожалению, полностью выключить строку состояния нельзя. Зато вы можете изменить этот интерфейс, убрав уведомления:
- Откройте настройки телефона.

- Перейдите в раздел «Уведомления и Центр управления», а затем – «Строка состояния».
- Напротив пункта «Значки уведомлений» передвиньте ползунок в левую сторону.

После выполнения указанных действий на ваш телефон не перестанут приходить уведомления. Просто они не будут отображаться в верхней строке. То есть вы сможете ознакомиться с ними через центр уведомлений. Кроме того, никуда не денутся часы, а также значки заряда аккумулятора и качества приема сети.
Настройка строки
Вы можете не только убрать уведомления, но и настроить другие компоненты строки состояния через настройки телефона. К примеру, на устройствах Xiaomi для изменения доступны следующие параметры:
- значки уведомлений;
- скорость сети;

- имя оператора;
- тип индикатора батареи;


То есть вы можете изменить значок, символизирующий уровень заряда, а также включить или выключить отображение скорости потребления данных при подключении к интернету. На некоторых моделях также есть возможность увеличить или уменьшить иконки. Но ни один смартфон не позволит вам полностью отказаться от верхней строчки, как бы вы этого ни хотели.
Что делать, если не открывается верхняя панель на Андроиде
Столкнувшись с подобной проблемой, сначала вы должны выяснить, тот ли элемент интерфейса вы понимаете под строкой состояния. Напомним, что многие путают его с центром уведомлений. Status Bar – это верхняя прозрачная полоска, которая отображается на каждом экране смартфона, будь то рабочий стол или меню настроек.
В то же время она может быть скрыта в играх с целью оптимизации процесса гейминга. Чтобы получить доступ к основным значкам, вам потребуется сделать короткий свайп от верхней части экрана вниз. Тогда вы сможете ознакомиться с зарядом аккумулятора и другими параметрами.

Если же Status Bar не отображается даже на главном экране, не говоря уже о сторонних приложениях, то для решения проблемы рекомендуется действовать по инструкции:
- Откройте настройки Status Bar и убедитесь, что у вас активировано отображение всех необходимых компонентов.
- Если вы пользуетесь смартфоном с вырезом под фронтальную камеру, то обязательно проверьте настройки выреза. Иногда компоненты верхней строчки могут скрываться вместе с камерой.
- Перезагрузите смартфон и проверьте, не исчезнет ли проблема.
- Если ничего из вышеперечисленного не помогает, то единственным вариантом проблемы будет сброс телефона до заводских настроек. В ходе выполнения этой операции будут удалены все файлы, а потому важно заблаговременно позаботиться о создании резервной копии.

Чаще всего проблема заключается в неправильно выставленных настройках Status Bar. Поэтому внимательно проверьте параметры, которые предлагает производитель смартфона.
