Як сховати рядок стану в Android


103

Я посилався на це посилання . У тому випадку, якщо користувач натисне на EditText (для ex To:), тоді клавіатура буде вискакувати, і в той же час користувач зможе прокрутити, щоб побачити всі залишилися представлення даних (наприклад, скласти, тему, кнопку відправки) у цей екран. Так само в моєму додатку я маю одну діяльність у тому, що у мене є кілька віджетів або переглядів. Припустимо, якщо користувач натискає на Edittext, який знаходиться в моїй діяльності, тоді клавіатура вискакує, і я можу прокручувати, щоб побачити види, що залишилися. Але якщо я даю цей атрибут android:theme="@android:style/Theme.NoTitleBar.Fullscreen"у маніфесті, я не зміг прокрутити, щоб побачити залишки представлень, але якщо дати атрибутandroid:theme="@android:style/Theme.NoTitleBar"як це в маніфесті, я можу прокрутити список, щоб побачити огляд, що залишився, але на цьому екрані є рядок стану, тут я хочу повний екран, і навіть якщо клавіатура вискочила, я можу прокрутити список, щоб побачити залишилися види .. які зміни я повинен зробити для цього ..?


3
@ user448250: Зауважте, що ви не можете приховати рядок стану в Android 3.0, і є пристойний шанс, що ви не зможете приховати рядок стану вперед. В Android 3.0 в рядку стану розміщені кнопки НАЗАД та НАЧАЛО, тому рядок стану повинен бути завжди доступним.
CommonsWare

Мені щойно вдалося сховати як заголовок, так і рядок стану на емуляторі з 3.0, API рівня 11.
erdomester

Повний екран повинен залишатися дозволеним, користувач зазвичай не хоче бачити рядок стану під час гри в повноекранну гру.
GMsoF

@ user448250 Ви коли-небудь це дізналися?
Тіаго

Що взагалі є активністю? Це якийсь файл XML у папці вашого веб-сайту?
Неясний пил

Відповіді:


171

Напишіть це у своїй діяльності

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

Перевірте документ тут: https://developer.android.com/training/system-ui/status.html

і ваш додаток перейде на повний екран. немає рядка стану, немає рядка заголовка :)


29
Зауважте, що це не буде працювати, якщо ваш суперклас активності викликає setContentView у методі onCreate - додаток вийде з виключенням.
Бен Клейтон

1
@Ron Я тестував на рівні API 8. Можливо, поведінка відрізняється від інших рівнів?
Бен Клейтон

Чи справедливо це для всіх версій від 2.3.x до 4.x?
Костадин

1
Це все ще не дозволяє екрану прокручуватися, коли відображається клавіатура програмного забезпечення.
Тіаго

3
Використовуйте його раніше, super.onCreate(savedInstanceState);якщо він зазнає аварії
Девід

19
 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

3
Я помітив, що під час використання цього методу показ програмної клавіатури переміщує погляди над editText, замість зміни розміру речей. Як це виправити?
андроїд розробник

19

Скористайтеся темою "Theme.NoTitleBar.Fullscreen"та спробуйте встановити "android:windowSoftInputMode=adjustResize"для цього параметра в. AndroidManifest.xml.Деталі ви можете знайти тут .


З вищенаведеним підходом мою панель стану можна приховати, коли програма працює на весь екран, однак я все одно бачу рядок стану, коли гортаю сторінку вниз. Чи є спосіб, якщо я взагалі не хочу рядок стану?
Hazel Wang

13

Використовуйте цей код для приховування рядка стану у вашій програмі та простого використання

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

12

Якщо вам потрібно це в одній діяльності, вам потрібно ввімкнути onCreate перед setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_screen);

1
Таким чином, клавіатура охоплює поле введення в веб-перегляді.
Аллен Ворк

@AllenVork якесь рішення?
Ішаан Кумар

12

Додайте це до класу занять

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

8

Використовуйте це для своїх Activity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

6
void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

Ви можете використовувати цей метод, щоб приховати рядок стану. І це важливо, щоб приховати і панель дій. У цьому випадку ви можете отриматиSupportActionBar (). Hid (), якщо ви розширили активність з підтримки lib на зразок Appcompat або можете просто викликати getActionBar (). Hid () після вищезазначеного способу. Дякую


6

Змініть тему програми у manifest.xmlфайлі.

android:theme="@android:style/Theme.Translucent.NoTitleBar"

Як не дивно, це показує помаранчеву смужку вгорі екрана. Панель сповіщень ховається.
Датський Ашфак

6

Якщо ви ховаєте рядок стану, зробіть це в onCreate (для діяльності) та onCreateView / onViewCreate (для фрагмента)

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

І не забудьте видалити прапор під час виходу з активності, інакше у вас буде весь екран у всьому додатку після відвідування цієї діяльності. Щоб очистити, зробіть це у своєму onDestroy (для діяльності) або onDestroyView (для фрагмента)

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

5

Використовуйте цей код:

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);

4

Цей код приховує рядок стану.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

щоб приховати рядок дій, напишіть цей рядок: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

обидва рядки можна записати спільно, щоб приховати панель дій та рядок стану. всі ці рядки повинні бути записані перед setContentViewвикликом onCreateметоду в методі.


Працює прекрасно. Дякую!
Джошуа Пінтер

3

В AndroidManifest.xml -> всередині діяльності, яку ви хочете використовувати, додайте наступне:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

а в методі MainActivity.java -> всередині onCreate () додайте наступне:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

3

Ви можете приховати, використовуючи styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

просто називайте це у своєму маніфесті так android:theme="@style/HiddenTitleTheme"


3

Ви можете приховати рядок стану, встановивши кольоровий прозорий колір, використовуючи xml . Додайте елемент темиBarColor до теми своєї діяльності:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

pls додайте код пояснення, лише відповіді трохи заплутані для інших
Ram Ghadiyaram

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
    , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity__splash_screen);
}

Хоча цей код може вирішити питання, включаючи пояснення того, як і чому це вирішує проблему, справді допоможе покращити якість вашої публікації та, ймовірно, призведе до збільшення кількості голосів. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, а не лише про людину, яка зараз задає питання. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
Дхарман

Я не мав багато уявлення про те, що саме є AppCompat, просто використовував його. І ці три лінії зробили свою роботу.
user3156040

Шкода, що власна документація Google, як завжди, невірна, як цього досягти. Можливо, вони повинні скопіювати вставити цей код.
Зеешан


0

Ми не можемо запобігти появі статусу в повноекранному режимі на (4.4+) kitkat або вище пристроях, тому спробуйте зламати, щоб заблокувати розширення рядка стану.

Рішення досить велике, тож ось посилання ТА:

StackOverflow: прихойте рядок стану в android 4.4+ або kitkat із повноекранним екраном


Я думаю, що ви помиляєтесь, перегляньте офіційну інформацію про приховування програми розробки
строку стану.android.com/training/system-ui/status.html

Хосе, я перевірю інформацію по даному посиланню і, якщо потрібно, оновлю відповідь. Це питання / відповідь було додано рік тому, коли офіційного рішення цього сценарію не було. Можливо, у наступній версії або версії google / android додали API / метод для того ж. Якщо вони забезпечили рішення, то це його захоплення. Дякую!
Jyo the Whiff

0

Це рішення працює для мене :)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

0
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
       View decorView = getWindow().getDecorView();
       // Hide the status bar.
       int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
       decorView.setSystemUiVisibility(uiOptions);
       // Remember that you should never show the action bar if the
       // status bar is hidden, so hide that too if necessary.
       ActionBar actionBar = getActionBar();
       actionBar.hide();
    }

    setContentView(R.layout.activity_main);

}
...
}

0

Використовується в Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

Напевно, залежить від теми. У моєму випадку стався виняток: "java.lang.IllegalStateException: Вам потрібно використовувати тему Theme.AppCompat (або нащадка) з цією діяльністю."
CoolMind

0

У розділі res -> значень -> styles.xml

Всередині стилю тіло вставити теги

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

0

Якщо ви посилаєтесь на документи Google, ви можете використовувати цей метод для android 4.1 і вище, зателефонуйте до цього методу перед setContentView ()

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Привіт! Подумайте про додавання коментарів або усних пояснень того, що ви робите.
Джордж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.