วิธีซ่อนแถบหัวเรื่องสำหรับกิจกรรมใน XML ด้วยธีมที่กำหนดเองที่มีอยู่


876

ฉันต้องการซ่อนแถบหัวเรื่องสำหรับกิจกรรมบางอย่างของฉัน ปัญหาคือฉันใช้สไตล์กับกิจกรรมทั้งหมดของฉันดังนั้นฉันจึงไม่สามารถกำหนดธีมให้@android:style/Theme.NoTitleBarเป็น

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

ฉันสามารถตั้งค่าไอเท็มสไตล์หัวเรื่องได้หรือไม่?

คำตอบ:


1065

ทำสิ่งนี้ในonCreate()วิธีการของคุณ

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here); 

thisActivityหมายถึง


7
คำตอบที่ดี คุณไม่จำเป็นต้องทำทั้งสองอย่างการลบแถบการแจ้งเตือนอาจทำให้เกินขีด
Jim Blackler

209
โปรดวางก่อนการเรียกไปยัง setContentView (R.id.x) มิฉะนั้นจะทำให้เกิดปัญหา เหตุผลไม่ชัดเจนทันทีสำหรับฉัน 08-13 12: 47: 33.561 E / AndroidRuntime (9125): java.lang.RuntimeException: ไม่สามารถเริ่มกิจกรรม ComponentInfo {com.myapp / com.myapp.SplashActivity}: android.util.AndroidRuntimeException: RequestFeature () ต้องถูกเรียก ก่อนเพิ่มเนื้อหา
mobibob

9
คุณควรพูดถึงจริง ๆ ว่าเมื่อใช้ requestWindowFeature () แรงปิดจะเกิดขึ้นหากคุณเรียกใช้บรรทัดนี้หลังจากเพิ่มเนื้อหาใด ๆ และในด้านข้างวิธี XML นั้นปลอดภัยกว่าและแยกโครงสร้างหน้าออกจากโค้ดของคุณ (ซึ่งเป็นจุดประสงค์ทั้งหมดของ XML ในตอนแรก)
b1nary.atr0phy

21
สิ่งนี้ไม่ทำงานโดยใช้ API 22 ฉันยังคงเห็นแถบชื่อเรื่องในตอนแรกว่าแอพเริ่มระบบ
2966445

7
มันใช้งานได้หากกิจกรรมของคุณขยายกิจกรรมไม่ได้เป็น AppCompatActivity เช่นคลาสของคุณควรได้รับการประกาศให้เป็นคลาสสาธารณะ myActi ขยายกิจกรรม {}
Manpreet Singh Dhillon

523

คุณสามารถแก้ไขAndroidManifest.xml:

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

หรือใช้android:theme="@android:style/Theme.Black.NoTitleBar"ถ้าคุณไม่ต้องการกิจกรรมเต็มหน้าจอ

หมายเหตุ:หากคุณเคยใช้มุมมองเริ่มต้น 'ก่อนที่คุณอาจจะยังเปลี่ยนระดับผู้ปกครองจากไปAppCompatActivityActivity


1
ฉันไม่รู้ว่าทำไม ฉันใช้โครงการเริ่มต้นและเพิ่มกิจกรรมแล้วเท่านั้น การเติมข้อความอัตโนมัติของฉันไม่ทำงาน แต่มีธีมอยู่ที่นั่น
Redax

82
android:theme="@android:style/Theme.Black.NoTitleBar"น่าจะเป็นประโยชน์มากขึ้นถ้าคุณกำลังทำเกม
คริส S

7
หรือ <style name = "AppTheme" parent = "android: Theme.Light.NoTitleBar" /> เพื่อเปลี่ยนธีม
Fernando JS

20
ฉันไม่รู้ว่าทำไม แต่นี่เป็นแอปที่ขัดข้องของฉัน ความช่วยเหลือใด ๆ
Akeshwar Jha

12
@Akeshwar: คุณอาจต้องยุ่งกับไฟล์ styles.xml ของคุณ ตัวอย่างเช่นเปลี่ยน <style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar"> เป็น <style name = "AppTheme" parent = "Theme.AppCompat.Light.NoActionBar"> หากคุณทำเช่นนั้นคุณไม่จำเป็นต้องเปลี่ยนไฟล์ AndroidManifest.xml (ฉันได้รับความผิดพลาดด้วยจนกระทั่งฉันแก้ไขปัญหานี้)
Brit Clousing

385

ตอนนี้ฉันทำสิ่งต่อไปนี้

ฉันประกาศสไตล์ที่สืบทอดทุกอย่างจากสไตล์ทั่วไปของฉันแล้วปิดการใช้งานแถบชื่อเรื่อง

<style name="generalnotitle" parent="general">
    <item name="android:windowNoTitle">true</item>
</style>

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

หากต้องการใช้สไตล์กับกิจกรรมเฉพาะให้เปิดAndroidManifest.xmlและเพิ่มแอตทริบิวต์ต่อไปนี้กับactivityแท็ก

<activity
    android:theme="@style/generalnotitle">

13
ฉันเชื่อว่าเขาสร้างสไตล์ที่เรียกว่า "ทั่วไป" และเขาก็ขยายออกไป เพียงลบออกเพื่อการใช้งานของคุณเอง
rcl

7
+1 สำหรับการตอบคำถามไม่ใช่เพียงแค่ระบุวิธีที่ชัดเจนที่สุดเพื่อให้ได้ผลลัพธ์ที่คล้ายกันเช่นเดียวกับคำตอบอื่น ๆ ในคำถามนี้ มันเป็นเพียงความอัปยศที่คุณมีที่จะตอบคำถามของคุณเองเพื่อให้ได้คำตอบที่ถูกต้อง ...
จูลส์

1
คำตอบนี้คือ best.even คุณสามารถใช้ชุดรูปแบบอื่น ๆ โดย android โดยไม่มีแถบชื่อเรื่อง ขอบคุณมากสำหรับการแบ่งปัน
Narendra Pal

4
ฉันเชื่อว่านี่เป็นคำตอบที่สง่างามกว่าการเขียนโปรแกรมนี้ขอให้ใช้ Windows (FEATURE_NO_TITLE) เพราะในกรณีนี้บางชื่อ "กระพริบ" ของชื่อยังคงปรากฏ
abovesun

1
คำตอบที่ดีที่สุดสำหรับคำถาม OP :) แต่ถึงกระนั้นก็ยังไม่ได้ยกแถบชื่อเรื่องในกิจกรรมของฉัน (API19)
1111161171159459134

166

ฉันไม่ชอบthis.requestWindowFeature(Window.FEATURE_NO_TITLE);เพราะแถบชื่อเรื่องปรากฏขึ้นชั่วครู่แล้วหายไป

ฉันไม่ชอบandroid:theme="@android:style/Theme.NoTitleBar"เพราะฉันสูญเสียการเปลี่ยนแปลง 3.0+ Holo ทั้งหมดที่ผู้ใช้อุปกรณ์ใหม่ได้รับ ดังนั้นฉันจึงเจอวิธีนี้

ในโฟลเดอร์res / valuesของคุณให้สร้างไฟล์ชื่อstyles.xml (หากยังไม่มีอยู่) ในไฟล์นั้นวางรหัสต่อไปนี้:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

ถัดไปสร้างres / values-v11ด้วยไฟล์styles.xmlอื่น(อีกครั้งนี้อาจมีอยู่แล้ว) ในไฟล์นั้นวางรหัสต่อไปนี้:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

และถ้าคุณกำหนดเป้าหมาย 4.0 ขึ้นไปสร้างความละเอียด / ค่า-v14โฟลเดอร์ที่มีอีกstyles.xmlไฟล์ (ใช่มันอาจจะมี) ในไฟล์นั้นวางรหัสต่อไปนี้:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

ท้ายที่สุดเมื่อไฟล์เหล่านี้ถูกสร้างขึ้นให้เปิดไฟล์AndroidManifiest.xmlของคุณคุณสามารถเพิ่มรหัสได้:

android:theme="@style/Theme.NoTitle"

ในแท็กกิจกรรมของกิจกรรมที่คุณไม่ต้องการให้มีชื่อหรือแท็กแอปพลิเคชันหากคุณต้องการให้มันใช้กับแอปพลิเคชันทั้งหมด

ตอนนี้ผู้ใช้ของคุณจะได้รับธีมที่เกี่ยวข้องกับรุ่นอุปกรณ์ของพวกเขาด้วยเค้าโครงหน้าจอที่คุณต้องการ

PS การเปลี่ยนค่าเป็นandroid:theme="@style/Theme.FullScreen"จะมีผลเหมือนกัน แต่ยังลบแถบการแจ้งเตือนด้วย


พวกเขาทำงานได้ดีกับสิ่งที่คุณบอก แต่ภาพก็เปลี่ยนไปเมื่อเปลี่ยนธีม แล้วจะทำอย่างไร ???
อรุณ

1
@arun - ฉันไม่เคยมีปัญหาเกี่ยวกับภาพใด ๆ โดยใช้วิธีนี้ คุณหมายถึงอะไรเหรอ?
Devin Stewart

1
คำตอบที่ดีที่สุด .. this.requestWindowFeature (Window.FEATURE_NO_TITLE); ไม่เหมาะและ <ชื่อรายการ = "หุ่นยนต์: windowNoTitle"> จริง </ item> ไม่หายเดิม theme..Thanks @DevinStewart ..accept +1 สำหรับคำอธิบายของคุณ :)
lynndragon

5
อ่าฉันโง่! ฉันใช้ ActionBarActivity ซึ่งไม่สมเหตุสมผลถ้าคุณต้องการลบ ACTIONBAR! การเปลี่ยนเป็นกิจกรรมง่ายๆหรือ FragmentActivity ช่วยให้ทางออกที่ดีนี้ทำงานเหมือนมีเสน่ห์
Scott Biggs

1
"น่าเสียดายที่ YourApp หยุดทำงานแล้ว"
Chris Allinson

104

แถบชื่อเรื่องสามารถลบออกได้สองวิธีดังที่กล่าวไว้ในหน้านักพัฒนา Android:

ในmanifest.xmlไฟล์:

  1. เพิ่มสิ่งต่อไปนี้ในapplicationหากคุณต้องการลบออกสำหรับกิจกรรมทั้งหมดในแอพ:

    <application android:theme="@android:style/Theme.Black.NoTitleBar">
  2. หรือสำหรับกิจกรรมเฉพาะ:

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

15
ควรใช้ android: theme = "@ android: style / Theme.DeviceDefault.NoActionBar.Fullscreen" แทนที่จะเป็น black.theme ให้อุปกรณ์จัดการกับธีม แต่ต้องขอบคุณผมใช้วิธีการของคุณ
วารนด์ Pezeshkian

54

คำตอบที่ถูกต้องอาจจะไม่ขยาย ActionbarActivity ค่อนข้างขยายเพียงแค่กิจกรรม


หากคุณยังคงใช้กิจกรรม actionbar ดูเหมือนว่านี่ใช้งานได้:

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}

ดูเหมือนว่างานนี้เกินไป:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

ฉันสามารถทำอย่างที่สกอตต์บิ๊กส์เขียน งานประเภทนี้ ยกเว้นในกรณีที่ไม่มีชุดรูปแบบ ฉันหมายถึงพื้นหลังของเมนูการตั้งค่าโปร่งใส:

แค่เปลี่ยน

public class MainActivity extends ActionBarActivity {

ไปที่กิจกรรมหรือกิจกรรมส่วนหนึ่ง

public class MainActivity extends Activity  {

อย่างไรก็ตามฉันสามารถทำให้มันดูดีพอโดยใช้การออกแบบวัสดุและไม่ลบ actionbar: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. ชุดไอคอนของแอปพลิเคชัน
  2. กำหนดสีของแถบการกระทำเพื่อให้ตรงกับการออกแบบ
  3. ตั้งค่าไอคอนเป็นเมนูการตั้งค่า
  4. เพิ่มไอคอนเพิ่มเติม (ปุ่มด้านบน)

มันเป็นตัวอย่างของการออกแบบวัสดุที่เข้ากันได้กับ Actionbar


4
การเปลี่ยน ActionBarActivity เป็น Activity นั้นเป็นเคล็ดลับสำหรับฉัน!
DritanX

44

อะไรที่เหมาะกับฉัน:

1- ใน styles.xml:

 <style name="generalnotitle" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

2- ในกิจกรรมหลัก

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}
  1. โดยชัดแจ้งสืบทอดสไตล์:

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

เช่นเดียวกับที่อธิบายไว้ข้างต้นบางครั้งมันไม่ทำงานจาก xml ฉันไม่ทราบว่าทำไมฉันไม่แน่ใจอย่างสมบูรณ์ แต่getSupportActionBar().hide();ภายใน onCreate () {} จะทำงานได้
ZeePee

43

หากคุณใช้this.requestWindowFeature(Window.FEATURE_NO_TITLE)ผู้ใช้จะยังสามารถเห็นแถบหัวเรื่องสักครู่ระหว่างการเปิดภาพเคลื่อนไหวเมื่อกิจกรรมเริ่มต้นonCreateขึ้น หากคุณใช้@android:style/Theme.Black.NoTitleBarตามที่แสดงด้านล่างแถบชื่อจะไม่ปรากฏในระหว่างการเปิดภาพเคลื่อนไหว

<activity 
    android:name=".MainActivity" 
    android:label="My App"
    android:theme="@android:style/Theme.Black.NoTitleBar"
    android:screenOrientation="portrait">

ตัวอย่างข้างต้นจะแทนที่ธีมของแอปพลิเคชันที่มีอยู่ของคุณหากคุณมีธีมที่มีอยู่แล้ว<item name="android:windowNoTitle">true</item>ให้เพิ่มเข้าไป


กิจกรรมของฉันคืออินสแตนซ์เดี่ยวด้วย @android: style / Theme.Black.NoTitleBar แต่การใช้โค้ดนี้จะทำงานเมื่อกิจกรรมที่สร้างขึ้นครั้งแรกในขณะที่คุณรู้จักกิจกรรม SingleInstance แล้วไม่สร้างอีกครั้งดังนั้นจึงใช้วิธี OnNewItent แต่ตอนนี้ปัญหาของฉันคือเมื่อแสดงกิจกรรม มันเป็นเพียงแค่แสดงแถบสถานะ 4 ประการที่สอง .How ฉันจะได้รับจาก this.Here เป็นคำถามของฉัน Link เป็น stackoverflow.com/questions/9308767/...
Herry

29

เมื่อฉันพยายามที่จะใช้คำตอบ upvoted สูงทั้งหมดที่แอปของฉันล้มเหลวเสมอ (ฉันคิดว่ามีบางอย่างเกี่ยวกับ "@android: style"?)

ทางออกที่ดีที่สุดสำหรับฉันคือการใช้สิ่งต่อไปนี้:

android:theme="@style/Theme.AppCompat.NoActionBar"

ไม่มีส่วนหัว / แถบชื่อเรื่องอีกต่อไป เพียงวางไว้ใน<application>...</application>หรือ<activity>...</activity>ขึ้นอยู่กับว่าคุณ (ไม่) ต้องการมันในแอปทั้งหมดหรือเพียงแค่กิจกรรมที่เฉพาะเจาะจง


นี่เป็นวิธีที่ดีที่สุด (หรือวิธีเดียว?) หากแอป "ขยาย AppCompatActivity"!
Ferrarezi

17

สร้างชุดรูปแบบดังต่อไปนี้

 <!-- Variation on the Light theme that turns off the title -->
<style name="MyTheme" parent="android:style/Theme.Black">
    <item name="android:windowNoTitle">true</item>
</style>



14

คุณเพียงแค่ต้องเปลี่ยนAppThemeสไตล์ใน Style.xml หากคุณเปลี่ยนคำจำกัดความจากDarkActionBar

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

ถึง NoActionBar

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

AppTheme ที่กำหนดใน AndroidManifast.xml


14

สำหรับAppCompatวิธีแก้ปัญหาต่อไปนี้ใช้งานได้สำหรับฉัน:

เพิ่มชุดรูปแบบใหม่โดยไม่มีแถบการกระทำในstyles.xmlชุดของparent="Theme.AppCompat.NoActionBar"คุณ

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/colorPrimary</item>

</style>


ตอนนี้ใช้สไตล์ชุดรูปแบบเดียวกันกับกิจกรรมบนหน้าจอเริ่มต้นของคุณ androidManifest.xml

<activity
        android:name=".ActivityName"
        android:theme="@style/SplashTheme"> // apply splash them here 

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

นี่คือผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


11

คุณสามารถใช้รหัสนี้ในไฟล์ java ของคุณ

เพิ่มบรรทัดนี้ก่อนที่คุณจะตั้งค่าหรือโหลดมุมมองของคุณ

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

11

ในonCreateวิธีการของคุณใช้ข้อมูลโค้ดต่อไปนี้:

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

แอพเริ่มต้นด้วยชื่อและซ่อนมันแสดงแสดงแอพที่ไม่มีชื่อ
Bachask8

10

เพิ่มทั้งสองอย่างสำหรับธีมที่คุณใช้:

    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>

"น่าเสียดายที่ YourApp หยุดทำงานแล้ว"
Chris Allinson

<item name="windowActionBar">false</item>ทำให้แอปพลิเคชันหยุดทำงาน อาจเป็นสิ่งที่ @ChrisAllinson หมายถึง
Mubashar

ไม่สามารถยืนยันได้ ทำงานได้ดีสำหรับฉัน
นักพัฒนา android

10

เพิ่มสไตล์นี้ให้กับไฟล์ style.xml ของคุณ

 <style name="AppTheme.NoActionBar">
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
 </style>

หลังจากนั้นอ้างอิงชื่อสไตล์นี้ลงใน androidManifest.xml ของคุณในกิจกรรม perticular ที่คุณไม่ต้องการเห็นแถบหัวเรื่องเช่นด้านล่าง

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

คุณลืมandroid:คำนำหน้าก่อนชื่อในบล็อกแรกของรหัส :)
Stam Kaly

8

ฉันใช้วิดเจ็ตสนับสนุน Toolbar v7 ดังนั้นเพื่อที่จะสามารถลบหรือซ่อนชื่อเราจำเป็นต้องเขียนสิ่งนี้

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);

คำตอบที่สมบูรณ์แบบ
Asesha George

7

หรือถ้าคุณต้องการซ่อน / แสดงแถบชื่อเรื่อง ณ จุดใด ๆ :

private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}

6

ในกรณีของฉันถ้าคุณใช้ android studio 2.1 และคอมไพล์ SDK ของคุณคือ 6.0 ให้ไปที่ไฟล์ manifest.xml ของคุณแล้วเปลี่ยนรหัสต่อไปนี้:

นี่คือรหัส:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lesterxu.testapp2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

และนี่คือ snip shoot (ดูรหัสไฮไลต์): ป้อนคำอธิบายรูปภาพที่นี่


ยินดีต้อนรับสู่ SO โปรดโพสต์รหัสของคุณโดยตรงไปที่ SO แทนที่จะโพสต์ภาพรหัสของคุณ
Richard Erickson

6

สิ่งนี้แก้ปัญหาของฉันได้

ในกิจกรรมของฉันอย่างชัดแจ้ง:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

อย่างมีสไตล์ภายใต้ชื่อ "AppTheme":

<resources>

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

</resources>

6

ในการซ่อนทั้งชื่อและแถบการกระทำฉันทำสิ่งนี้:

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

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

ใน Activity.java ก่อน setContentView:

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

กล่าวคือ

// ลบแถบหัวเรื่อง

this.requestWindowFeature (Window.FEATURE_NO_TITLE);

// ลบแถบการแจ้งเตือน

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

หมายเหตุ : คุณต้องเก็บสายเหล่านี้ไว้ก่อนsetContentView


ฉันไม่ได้มีประสบการณ์เกี่ยวกับ Java หรือการสร้างแอพ Android ดังนั้นความคิดเห็นของคุณที่ควรจะอยู่ในบรรทัดของโค้ดเหล่านี้ก่อน setContentView คือสิ่งที่ช่วยได้จริงๆ! ขอบคุณ!
Kyle van Til

5

คำตอบแรกคือ amphibole นี่คือคำอธิบายของฉัน: เพิ่ม:

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

ใน oncreate () วิธีการ

ก่อน:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);

(ไม่เพียง แต่ก่อน setContentView) หากไม่ทำเช่นนี้คุณจะได้รับ forceclose +1 คำตอบนี้


4

ฉันพบสองสาเหตุว่าทำไมข้อผิดพลาดนี้อาจเกิดขึ้น

หนึ่ง. การตั้งค่าสถานะหน้าต่างถูกตั้งค่าไว้แล้วภายในsuper.onCreate(savedInstanceState);ซึ่งในกรณีนี้คุณอาจต้องการใช้คำสั่งต่อไปนี้:

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

super.onCreate(savedInstanceState);

สอง. คุณมีปุ่มย้อนกลับ / ขึ้นภายใน TitleBar ซึ่งหมายความว่ากิจกรรมปัจจุบันเป็นลูกของลำดับชั้นของกิจกรรมอื่นซึ่งในกรณีนี้คุณอาจต้องการแสดงความคิดเห็นหรือลบบรรทัดของรหัสนี้จากภายในonCreateวิธีการ

getActionBar().setDisplayHomeAsUpEnabled(true);

ขอบคุณมันช่วยให้ฉันเพื่อตั้ง NoTitle และ FullScreen โดยไม่มีการเปลี่ยนแปลงรูปแบบ
Mohsen Afshin

4

นี่คือลักษณะของรหัสที่สมบูรณ์ หมายเหตุการนำเข้า android.view.Window

package com.hoshan.tarik.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}

4

เพิ่ม theme @ style / Theme.AppCompat.Light.NoActionBar ในกิจกรรมของคุณบน AndroidManifest.xml เช่นนี้

<activity
        android:name=".activities.MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>

3

หากคุณทำสิ่งที่ผู้ใช้YaWและDoug Paulพูดคุณต้องทราบว่าต้องตั้งค่าคุณสมบัติของหน้าต่างก่อนที่จะเรียก setContentView ถ้าไม่คุณจะได้รับการยกเว้น


3

เพิ่มในไฟล์ manifiest

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

เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ ur java

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);

3

ฉันใช้ Android Xamarin และมันใช้งานได้สำหรับฉัน

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