วิธีการปิดการใช้งานแถบการกระทำอย่างถาวร


138

ฉันสามารถซ่อนแถบการกระทำในรวงผึ้งโดยใช้รหัสนี้:

getActionBar().hide();

แต่เมื่อแป้นพิมพ์เปิดขึ้นและผู้ใช้คัดลอกสิ่งใด ๆ แถบการกระทำจะแสดงอีกครั้ง ฉันจะปิดการใช้งานแถบการกระทำอย่างถาวรได้อย่างไร


2
พบคำตอบ hhh <กิจกรรม android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" .... >
Biji

1
นั่นไม่ใช่แถบการกระทำเมื่อคุณพยายามคัดลอกวางมุมมองเริ่มต้น
Padma Kumar

ใช่ แต่หลังจากคัดลอกวางปลายก็ยังคงไม่หายไป
Biji

getSupportActionBar () ซ่อน ().
Ameya Salagre

คำตอบ:


252

หากคุณกำลังใช้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" ... />

8
นี่คือคำตอบที่ถูกต้อง ไม่ลบการกำหนดเองที่กำหนดเองเช่นโซลูชันของ @ Biji
phreakhead

1
ความคิดใดที่จะตั้งค่าสถานะเพิ่มเติมเพื่อซ่อนแถบการแจ้งเตือน?
jesses.co.tt

1
ฉันยังพบว่าจำเป็นต้องสืบทอดจาก FragmentActivity แทน ActionBarActivity
Meanman

4
@ jesses.co.tt แถบการแจ้งเตือนสามารถลบได้โดยใช้<item name="android:windowFullscreen">true</item>
Mike Baxter

สิ่งนี้ไม่ได้ผลสำหรับฉัน ใช้ข้อมูลต่อไปนี้: stackoverflow.com/questions/29790070/…
Christopher Smit

116

โดยการตั้งค่าธีมกิจกรรมใน Manifest

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

ดูเหมือนว่าวิธีเดียวที่จะทำได้ ESP ถ้าคุณเกิดขึ้นจะมี relativelayout ที่ด้านล่าง ...
jcfrei

1
นี่เป็นวิธีเดียวที่ฉันสามารถไปทำงานได้โชคไม่ดี มันลบชุดรูปแบบที่กำหนดเอง แต่มันเป็นสิ่งเดียวที่แท้จริงActionBarสำหรับฉัน
RileyE

3
สิ่งนี้ใช้ไม่ได้กับการบังคับใช้ธีม AppCompat ใน ADT ใหม่ ฉันไม่คิดว่าจะต่อสู้กับสิ่งนี้ - การพยายามกำจัดให้หมดไปจาก AppCompat ก็เป็นทางออกที่ดีเช่นกัน! ฉันได้ลองใช้วิธีการของ @ monchote แล้วมันใช้ได้ผลสำหรับฉัน
ericn

นี่ควรเป็น <กิจกรรม Android: theme = "@ android: style / Theme.NoTitleBar"> แทนที่จะเป็น <กิจกรรม android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila

สำหรับ Samsung Galaxy J2 ทำให้แอพพลิเคชั่นขัดข้อง แต่ไม่มีปัญหาใน Nexus 9
Suici Doga

34

ฉันใช้รหัสต่อไปนี้ภายในฟังก์ชั่น onCreate ของฉัน:

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

ที่มา: https://developer.android.com/guide/topics/ui/actionbar.html


1
ดูเหมือนว่าแหล่งข้อมูลจะล้าสมัยตั้งแต่ปี 2562 แหล่งข้อมูลล่าสุด: developer.android.com/training/system-ui/status
B.Cakir

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

บางทีนี่อาจช่วยคุณได้


3
โปรดทราบว่าวิธีนี้ต้องใช้ค่าสูงสุดของ api ระดับ 13
Olumide

23

ด้วยกิจกรรม Superclass ที่สร้างจาก Android Studio ที่เป็นค่าเริ่มต้นคือActionBarActivityแล้วจึงไม่มีวิธีแก้ปัญหาในการตอบสนองอื่น ๆ ในการแก้ปัญหาเพียงแค่เปลี่ยน superclass:

public class xxxActivity extends ActionBarActivity{

ถึง:

public class xxxActivity extends Activity {

มันทำเพื่อฉัน ขอบคุณสำหรับความช่วยเหลือของคุณ.
j_fulch

17

หากคุณต้องการแสดงเต็มหน้าจอโดยไม่มีการกระทำแถบและชื่อเรื่อง

เพิ่มใน 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" 

12

วิธีที่ดีที่สุดที่ฉันพบซึ่งให้ธีมที่กำหนดเองและไม่มีแถบการกระทำคือการสร้าง SuperClass สำหรับกิจกรรมทั้งหมดในโครงการของฉันและใน onCreate () โทรไปที่บรรทัดของรหัสต่อไปนี้ -

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

มันใช้ได้ผลเสมอสำหรับฉัน ปัญหาเดียวในวิธีนี้คือคุณจะเห็นแถบการกระทำเป็นเสี้ยววินาทีเมื่อเริ่มต้นแอป (ไม่ใช่แอพที่เป็นแอพที่สมบูรณ์)




7

คุณสามารถบังคับซ่อนแถบการกระทำได้ง่ายๆ:

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

เพียงแค่ใช้ชุดรูปแบบเริ่มต้นของคุณ


7

หากคุณต้องการชุดรูปแบบที่ไม่มีแถบการกระทำคุณสามารถใช้ตัวแปร '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 ของคุณ :)


6

อย่าใช้ธีม Holo และ Actionbar จะหายไป รหัสนี้ใช้งานได้กับฉันใน 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


6

ภายใต้res -> values ​​-> styles.xml

เปลี่ยนแปลง

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

ถึง

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


5

นี่เป็นวิธีแก้ปัญหาอย่างรวดเร็ว

คุณค้นหา styles.xml และเปลี่ยนธีมแอปพลิเคชันพื้นฐานเป็น "Theme.AppCompat.NoActionBar" ดังที่แสดงด้านล่าง

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

3

ด้านล่างนี้เป็นขั้นตอนในการซ่อนแถบการกระทำอย่างถาวร:

  1. เปิดแอป / res / values ​​/ styles.xml
  2. ค้นหาอิลิเมนต์สไตล์ที่ชื่อ "apptheme" <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">ควรมีลักษณะคล้ายกับ
  3. ตอนนี้แทนที่พาเรนต์ด้วยชุดรูปแบบอื่น ๆ ที่มี "NoActionBar" ในชื่อ

    คุณยังสามารถตรวจสอบลักษณะที่ปรากฏของธีมโดยสลับไปที่แท็บออกแบบของ activity_main.xml จากนั้นลองใช้แต่ละธีมที่มีให้ในรายการดรอปดาวน์ธีมของ UI

  4. หากMainActivityของคุณขยายAppCompatActivityตรวจสอบให้แน่ใจว่าคุณใช้ธีม AppCompat


3

พิมพ์รหัสนี้เป็นonCreateวิธีการของคุณก่อนsetContentView:

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

3

ฉันต้องการโพสต์เป็นแนวทางการออกแบบสิ่งนี้จะแยกการออกแบบออกจากตรรกะทางธุรกิจของคุณ:

ขั้นตอนที่ 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">

นี่เป็นทางออกที่ดีที่สุดสำหรับฉันหลังจากลองสิ่งต่างๆมากมาย


2

ในฟังก์ชั่น onCreate เพิ่มรหัสต่อไปนี้

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

และเพียงนำเข้า android.support.v7.app.ActionBar


2

ตรวจสอบให้แน่ใจว่าคุณสร้างธีมใหม่โดยเปลี่ยนชื่อของธีมเริ่มต้นในstyles.xmlไฟล์เป็น:

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

และกว่าเปลี่ยนธีมจากรายการแบบหล่นลงใต้ของคุณmain_activity.xmlเป็นสิ่งที่คุณเรียกว่าธีมของคุณ


1

โซลูชันที่น่าสนใจอีกประการหนึ่งที่คุณต้องการเก็บ ViewPager ไว้ในขณะที่ลบแถบการกระทำคือมีสไตล์ตามที่แสดง

<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 โดยไม่มีแถบแอ็คชัน

Ref: https://github.com/CyanogenMod/android_packages_apps_Dialer


วิธีนี้จะทำให้พื้นที่สีขาวอยู่ด้านบน
Felipe FMMobile

สิ่งนี้ใช้ได้กับฉันใน Android 2.3 ด้วย Theme.AppCompat.Light ถ้าฉันเปลี่ยนผู้ปกครอง NoActionBarStyle เป็น @ style / Widget.AppCompat.ActionBar.TabBar (ฉันใช้ ViewPager)
2557

1

ลองสิ่งนี้ในรายการของคุณ

 <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

มีสองวิธีในการปิดการใช้งานActionBarใน Android

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

1

ใช้สิ่งนี้ในstyles.xmlไฟล์:


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

0

ฉันใช้วิธีนี้:

ในรายการภายในแท็กกิจกรรมของคุณ:

android:label="@string/empty_string"

และใน strings.xml:

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

วิธีนี้ทำให้คุณคงไว้กับแถบเครื่องมือ ActionBar (หรือแถบเครื่องมือ) แต่เมื่อกิจกรรมหากสร้างชื่อจะว่างเปล่าโดยอัตโนมัติ


0

น่าประหลาดใจที่ไม่มีสิ่งใดที่เหมาะกับฉันเมื่อสร้างบน Nexus 7 ที่ใช้ 4.4.2 (API 19) ส่วนใหญ่อย่างน้อยกับ Android Studio เวอร์ชันล่าสุด (1.2.1.1) หลังจากสร้างแอปกิจกรรมว่างเปล่าแล้ว:

หุ่นยนต์: ชุดรูปแบบ = "@ สไตล์ / AppTheme"

อยู่ในองค์ประกอบของแอปพลิเคชันไม่ใช่องค์ประกอบของกิจกรรม หากฉันลบรหัสข้างต้นหรือพยายามเปลี่ยนเป็น:

หุ่นยนต์: ชุดรูปแบบ = "@ หุ่นยนต์: แบบ / Theme.Holo.Light.NoActionBar"

แอปจะไม่ทำงาน ... หากสิ่งนี้เกิดขึ้นกับคุณเพียงไปที่ไฟล์ styles.xml ของคุณ (res> values> styles.xml) และเพิ่ม. NoTitleBar ไปยังจุดสิ้นสุดของพาเรนต์เช่นบล็อกนี้:

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

ไม่จำเป็นต้องทำการเปลี่ยนแปลงไฟล์ AndroidManifest


0

ในของ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" ได้จากที่นี่

หวังว่าฉันช่วยคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.