Cách tắt thanh hành động vĩnh viễn


138

Tôi có thể ẩn thanh hành động trong tổ ong bằng mã này:

getActionBar().hide();

Nhưng khi bàn phím mở và người dùng sao chép bất cứ thứ gì, thanh hành động sẽ hiển thị lại. Làm thế nào tôi có thể vô hiệu hóa thanh hành động vĩnh viễn?


2
Tìm thấy câu trả lời hhh <hoạt động android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji

1
không phải là thanh hành động khi bạn cố sao chép, dán chế độ xem mặc định của nó.
Padma Kumar

đúng, nhưng sau khi sao chép xong, nó vẫn không biến mất
Biji

getSupportActionBar (). hide ();
Ameya Salagre

Câu trả lời:


251

Nếu bạn đang sử dụng Theme.Holo.Lightvà muốn sử dụng Theme.Holo.Light.NoActionBarbiến thể trên các thiết bị trước 3.2, bạn có thể thêm biến thể này vào styles.xml:

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style> 

và sau đó đặt nó làm chủ đề cho hoạt động của bạn:

<activity android:theme="@style/NoActionBar" ... />

8
Đây là câu trả lời chính xác. Không xóa chủ đề tùy chỉnh như giải pháp của @ Biji.
phreakhead

1
Bạn có biết cờ bổ sung sẽ được đặt để ẩn thanh thông báo không?
jesses.co.tt

1
Tôi cũng thấy cần phải kế thừa từ FragmentActivity thay vì ActionBarActivity.
Nghĩa quân

4
@ jesses.co.tt Thanh thông báo có thể được gỡ bỏ bằng cách sử dụng<item name="android:windowFullscreen">true</item>
Mike Baxter

Điều này đã không làm việc cho tôi. Đã sử dụng như sau: stackoverflow.com/questions/29790070/ Kẻ
Christopher Smit

116

Bằng cách đặt chủ đề hoạt động trong Manifest,

<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>

đây có vẻ là cách thích hợp duy nhất để làm điều đó đặc biệt nếu bạn
tình cờ

1
Thật không may, đây là cách duy nhất mà tôi có thể đi làm, thật không may. Nó loại bỏ chủ đề tùy chỉnh, nhưng nó thực sự là thứ duy nhất loại bỏ hoàn toàn ActionBar, đối với tôi.
RileyE

3
Điều này không hoạt động với việc thực thi chủ đề AppCompat trong ADT mới. Tôi không nghĩ chiến đấu với điều này - cố gắng loại bỏ hoàn toàn khỏi AppCompat cũng là một giải pháp tốt! Tôi đã thử cách tiếp cận của @ monchote và nó hiệu quả với tôi
ericn

đây phải là <Activity android: theme = "@ android: style / Theme.NoTitleBar"> thay vì <Activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila

Trên Samsung Galaxy J2, nó làm cho ứng dụng bị sập nhưng không có vấn đề gì trên Nexus 9
Suici Doga


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

có lẽ điều này giúp bạn


3
Lưu ý rằng phương pháp này yêu cầu tối thiểu mức api 13
Olumide

23

Với siêu lớp Activity được tạo mặc định của Android Studio ActionBarActivityvà sau đó, không có giải pháp nào trong các phản hồi khác hoạt động. Để giải quyết chỉ cần thay đổi siêu lớp:

public class xxxActivity extends ActionBarActivity{

đến:

public class xxxActivity extends Activity {

Điều này đã làm điều đó cho tôi. Cảm ơn bạn đã giúp đỡ.
j_fulch

17

Nếu bạn muốn có được toàn màn hình mà không có ActionBar và Title.

Thêm nó vào 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>

và sử dụng kiểu tại manifest.xml.

android:theme="@style/AppTheme.NoActionBar" 

12

Cách tốt nhất mà tôi tìm thấy mang đến chủ đề tùy chỉnh và không có thanh hành động, là tạo SuperClass cho tất cả các hoạt động trong dự án của tôi và trong đó gọi onCreate () gọi dòng mã sau -

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Nó luôn làm việc cho tôi. Vấn đề duy nhất trong phương pháp này là, bạn sẽ thấy thanh hành động trong một phần giây khi khởi động ứng dụng (Không phải hoạt động, ứng dụng hoàn chỉnh).


12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

12

Chuyển đến tệp kiểu XML Thay đổi DarkActionBar này thành NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

7

Bạn có thể buộc ẩn thanh hành động một cách đơn giản:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Chỉ cần sử dụng chủ đề mặc định của bạn.


7

Nếu bạn chỉ muốn một chủ đề không có thanh hành động, bạn có thể sử dụng biến thể 'NoActionBar', ví dụ: nếu chủ đề cơ bản của bạn là như dưới đây

<!-- 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>

sau đó bạn có thể sử dụng

<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>

Nhưng nếu bạn muốn giữ lại các thuộc tính của chủ đề chính của mình, ví dụ như AppTheme, bạn có thể làm như dưới đây

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Bạn có thể giữ lại tất cả các thuộc tính của chủ đề cơ sở theo cách này và không phải thêm chúng một cách rõ ràng vào chủ đề NoActionBar của bạn :)


6

Đừng sử dụng chủ đề Holo và Actionbar sẽ biến mất. Mã này đang hoạt động với tôi trên API 8+, với hỗ trợ lib v7:

<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>

đặt chủ đề đó cho hoạt động của bạn:

<activity android:theme="@style/NoActionBar" ... />

và trong lớp hoạt động của bạn.

Nó hoạt động ngay cả khi nó mở rộng ActionBarActivity.


6

Trong độ phân giải -> giá trị -> style.xml

Thay đổi

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Đến

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">


5

Đây là một giải pháp nhanh chóng.

Bạn tìm thấy tệp XML và bạn thay đổi chủ đề ứng dụng cơ bản thành "Theme.AppCompat.NoActionBar" như hiển thị bên dưới.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

Dưới đây là các bước để ẩn thanh hành động vĩnh viễn:

  1. Mở ứng dụng / res / value / Styles.xml.
  2. Tìm kiếm các yếu tố phong cách được đặt tên là "apptheme". Nên nhìn tương tự như <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.
  3. Bây giờ thay thế cha mẹ bằng bất kỳ chủ đề nào khác có chứa "NoActionBar" trong tên của nó.

    a. Bạn cũng có thể kiểm tra giao diện của một chủ đề bằng cách chuyển sang tab thiết kế của Activity_main.xml và sau đó thử từng chủ đề được cung cấp trong danh sách thả xuống chủ đề của giao diện người dùng.

  4. Nếu MainActivity của bạn mở rộng AppCompatActivity , hãy đảm bảo bạn sử dụng chủ đề AppCompat.


3

Nhập mã này vào onCreatephương thức của bạn trước setContentView:

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

3

Tôi muốn đăng một cách tiếp cận Nhà thiết kế cho vấn đề này, điều này sẽ giữ cho thiết kế tách biệt với logic kinh doanh của bạn:

Bước 1. Tạo kiểu mới trong (res-> value-> Styles.xml): Về cơ bản, nó là bản sao của lược đồ tổng thể của bạn với cha mẹ khác nhau - 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>

Bước 2: Trong AndroidManifest.xml của bạn, hãy thêm chủ đề này vào hoạt động bạn muốn: vd: Tôi muốn hoạt động chính của mình không có thanh hành động, vì vậy hãy thêm điều này như dưới đây:

<activity android:name=".MainActivity"
            android:theme="@style/MarkitTheme">

Đây là giải pháp tốt nhất cho tôi sau khi thử rất nhiều thứ.


2

trong hàm onCreate thêm đoạn mã sau

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

và chỉ cần nhập android.support.v7.app.ActionBar


2

Đảm bảo bạn tạo một chủ đề mới bằng cách thay đổi tên của chủ đề mặc định trong styles.xmltệp thành:

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

và thay đổi chủ đề từ trình đơn thả xuống bên dưới main_activity.xmlthành bất cứ điều gì bạn gọi là chủ đề của mình.


1

Một giải pháp thú vị khác mà bạn muốn giữ lại ViewPager trong khi xóa thanh hành động là tạo kiểu như hiển thị

<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>

Đây là cách mà hầu hết các ứng dụng Trình quay số trong Android đang hiển thị ViewPager mà không có thanh hành động.

Tham chiếu: https://github.com/CyanogenMod/android_packages_apps_Dialer


giải pháp này để lại một khu vực màu trắng trên đầu.
Felipe FMMobile

Điều này hoạt động với tôi trên Android 2.3 với Theme.AppCompat. Hãy làm sáng tỏ nếu tôi thay đổi cha mẹ NoActionBarStyle thành @ style / Widget.AppCompat.ActionBar.TabBar (Tôi đang sử dụng ViewPager)
TouchBoarder

1

thử cái này trong bảng kê khai của bạn

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

Có hai cách để vô hiệu hóa ActionBartrong Android.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 

1

Sử dụng điều này trong styles.xmltập tin:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

Tôi sử dụng giải pháp này:

trong bảng kê khai, bên trong thẻ hoạt động của bạn:

android:label="@string/empty_string"

và trong chuỗi XML:

<string name="empty_string">""</string>

Bằng cách này, bạn giữ ActionBar (hoặc Thanh công cụ) với tiêu đề, nhưng khi Hoạt động nếu được tạo, tiêu đề sẽ tự động trống.


0

Thật kỳ lạ, không ai trong số này hoạt động với tôi khi xây dựng trên Nexus 7 chạy 4.4.2 (API 19). Đối với hầu hết các phần, ít nhất là với phiên bản Android Studio mới nhất (1.2.1.1) sau khi tạo một ứng dụng hoạt động trống,:

android: theme = "@ style / AppTheme"

là trong phần tử ứng dụng, không phải là phần tử hoạt động. Nếu tôi xóa mã trên hoặc cố gắng thay đổi thành:

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

ứng dụng sẽ không chạy ... nếu điều này xảy ra với bạn, chỉ cần truy cập vào tệp tệp style.xml của bạn (res> value> Styles.xml) và thêm .NoTitleBar vào cuối khối cha như khối này:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

Không cần thay đổi tệp AndroidManifest.


0

Trong của bạn activity_main.xml, bạn có thể điều chỉnh từ đó trong dòng:

<?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"
.......    
">

Đôi khi khi bạn có thể thấy những thứ như thế này Bấm vào đây , Bạn có thể chọn từ đây chủ đề "noActionBar".

Hy vọng tôi đã giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.