Я можу приховати панель дій у соті за допомогою цього коду:
getActionBar().hide();
Але коли клавіатура відкривається, і користувач копіює щось, вставляє, панель дій знову відображається. Як я можу назавжди відключити панель дій?
Я можу приховати панель дій у соті за допомогою цього коду:
getActionBar().hide();
Але коли клавіатура відкривається, і користувач копіює щось, вставляє, панель дій знову відображається. Як я можу назавжди відключити панель дій?
Відповіді:
Якщо ви використовуєте Theme.Holo.Light
і хочете використовувати Theme.Holo.Light.NoActionBar
варіант на попередніх 3.2 пристроях, ви можете додати це до своїх styles.xml
:
<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
а потім встановіть це як тему вашої діяльності:
<activity android:theme="@style/NoActionBar" ... />
<item name="android:windowFullscreen">true</item>
Встановивши тему діяльності в Manifest,
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>
ActionBar
для мене це справді єдине, що повністю видаляє .
Я використовую такий код у своїй функції onCreate:
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
Джерело: https://developer.android.com/guide/topics/ui/actionbar.html
З суперкласом активності, створеним за замовчуванням Android Studio, ActionBarActivity
і тоді жодне рішення в інших відповідях не працює. Щоб вирішити просто змінити суперклас:
public class xxxActivity extends ActionBarActivity{
до:
public class xxxActivity extends Activity {
Якщо ви хочете отримати повний екран без actionBar та Title.
Додайте його у style.xml
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
і використовуйте стиль на manifest.xml.
android:theme="@style/AppTheme.NoActionBar"
Найкращий спосіб, який я знайшов, що дає власні теми та не працює панель дій, - це створити SuperClass для всіх видів діяльності в моєму проекті і в ньому onCreate () викликати наступний рядок коду -
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Це завжди працює для мене. Єдине питання цього підходу полягає в тому, що ви відкриєте панель дій на частку секунди під час запуску програми (Не активність, повний додаток).
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
getSupportActionBar().hide();
}
Ви можете примусити приховати панель дій просто:
ActionBar actionbar = getSupportActionBar();
actionBar.hide();
Просто використовуйте тему за замовчуванням.
Якщо ви просто хочете тему без панелі дій, ви можете використовувати варіант "NoActionBar", наприклад, якщо ваша основна тема наведена нижче
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
тоді можна використовувати
<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Але якщо ви хочете зберегти властивості основної теми, тобто AppTheme, ви можете зробити так, як нижче
<style name="AppThemeNoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Ви можете зберегти всі властивості базової теми таким чином і не потрібно явно додавати їх у свою тему NoActionBar :)
Не використовуйте тему Holo, і панель дій зникне. Цей код працює для мене на API 8+ і підтримує lib v7:
<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>
встановіть цю тему для своєї діяльності:
<activity android:theme="@style/NoActionBar" ... />
і в класі занять.
Він працює навіть тоді, коли розширює ActionBarActivity.
У розділі res -> значень -> styles.xml
Зміна
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
До
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Нижче наведено етапи, щоб назавжди приховати панель дій:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
.Тепер замініть батьківську програму будь-якою іншою темою, яка містить "NoActionBar" у своєму імені.
а. Ви також можете перевірити, як виглядає тема, перейшовши на вкладку дизайну Activity_main.xml, а потім випробувати кожну тему зі спадного списку теми інтерфейсу користувача.
Якщо ваша MainActivity розширює AppCompatActivity , переконайтеся, що ви використовуєте тему AppCompat.
Введіть цей код у свій onCreate
метод раніше setContentView
:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
Я хотів би опублікувати скоріше дизайнерський підхід до цього, це дозволить зробити дизайн окремим від вашої бізнес-логіки:
Крок 1. Створіть новий стиль у (res-> values-> styles.xml): в основному це копія вашої загальної схеми з іншим батьків - parent = "Theme.AppCompat.Light.NoActionBar"
<!-- custom application theme. -->
<style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
</style>
Крок 2: У своєму AndroidManifest.xml додайте цю тему до діяльності, яку ви хочете: наприклад, я хочу, щоб моя основна діяльність була без панелі дій, тому додайте її так, як нижче:
<activity android:name=".MainActivity"
android:theme="@style/MarkitTheme">
Це найкраще рішення для мене після спробу багатьох речей.
Переконайтеся, що ви створили нову тему, змінивши назву теми за замовчуванням у styles.xml
файлі на:
<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
а потім змінити тему зі спадного меню main_activity.xml
на те, що ви назвали.
Ще одне цікаве рішення, коли ви хочете зберегти ViewPager, видаляючи панель дій, - це мати стиль show
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/NoActionBarStyle</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
<item name="android:backgroundSplit">@null</item>
<item name="android:displayOptions"></item>
</style>
Ось так більшість додатків Dialer в android показує ViewPager без панелі дій.
Посилання: https://github.com/CyanogenMod/android_packages_apps_Dialer
Використовуйте це у styles.xml
файлі:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
Я використовую це рішення:
у маніфесті всередині тегу активності:
android:label="@string/empty_string"
та в strings.xml:
<string name="empty_string">""</string>
Таким чином ви зберігаєте ActionBar (або Панель інструментів) із заголовком, але коли Активність, якщо створена, заголовок автоматично порожній.
Як не дивно, жодне з них не працювало для мене під час побудови на Nexus 7 під керуванням 4.4.2 (API 19). Здебільшого, щонайменше, з останньою версією Android Studio (1.2.1.1) після створення додатка "пусту активність":
android: topic = "@ style / AppTheme"
знаходиться в елементі програми, а не в елементі діяльності. Якщо я видалив вищезазначений код або спробував змінити його на:
android: topic = "@ android: style / Theme.Holo.Light.NoActionBar"
додаток не запуститься ... якщо це з вами відбувається, просто зайдіть у файл styles.xml (res> значень> styles.xml) і додайте .NoTitleBar до кінця батьківського типу, як цей блок:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Зміни у файлі AndroidManifest не потрібні.
У своєму activity_main.xml
, ви можете налаштувати звідти в рядку:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
android:theme="@style/Theme.Design.Light.NoActionBar"
.......
">
Іноді, коли ви можете побачити такі речі, натисніть тут , ви можете вибрати тут тему "noActionBar".
Сподіваюся, я допомогла вам.