ฉันจะลบแถบหัวเรื่องออกจากแอปได้อย่างไร?


90

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

คำตอบ:


156

ไปที่ styles.xml และเปลี่ยน.DarkActionBarเป็น.NoActionBar

<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="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

หากสีไม่เกี่ยวข้องกับแอปของคุณคุณสามารถเลือกได้

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

1
ทำงานได้ตามที่คาดไว้ อย่างไรก็ตามชื่อนี้จะหายไปเมื่อดูแอปที่ใช้งานอยู่ทั้งหมด
IAbstract

คุณจะแก้ไข @IAbstract อย่างไร?
Pablo Biedma

@PabloBiedma: ฉันไม่รู้
IAbstract

60

ในไฟล์รายการเปลี่ยนแปลง:

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

4
แม้ว่าจะได้ผล แต่การแก้ไขstyles.xmlไฟล์อาจเป็นตัวเลือกที่ดีกว่าสำหรับคนส่วนใหญ่เนื่องจากการใช้วิธีนี้จะไม่สนใจค่าใด ๆ ที่อาจถูกตั้งค่าไว้AppThemeในstyles.xmlไฟล์ โซลูชันด้านล่างซึ่งแทนที่คลาสพาเรนต์NoActionBarภายในstyles.xmlไฟล์จะเก็บรักษาข้อมูลสไตล์ที่มีอยู่แล้วซึ่งได้รับการตั้งค่าไว้
Lemonseed

ในกรณีนั้นพื้นหลังแอปทั้งหมดของฉันจะกลายเป็นสีดำ
Sajid khan

24
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

ทำงานonCreate()เมื่อsetContentView()ถูกเรียกใช้ก่อน

มิฉะนั้นจะเกิดปัญหา


6
ทำให้แอปขัดข้อง ฉันวางเส้นไว้ระหว่างsuper.onCreate.....และsetContentView..... และมันก็ขัดข้อง
Nalorin

นี่ไม่ใช่วิธีที่ถูกต้องในการทำ คุณตอร์เรสอธิบายได้ดี
Jithin Pavithran

16

ในไฟล์styles.xmlให้เปลี่ยนDarkActionBarเป็นNoActionBar

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>


13

ตรวจสอบสิ่งนี้

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

นี่คือรหัสที่ใช้งานได้เพื่อซ่อนแถบโดยโปรแกรมเอง สามารถวางไว้ในตัวสร้างonCreate(...)หลังsuper.onCreate(..)และsetContentView(...)บรรทัดเพื่อซ่อนแถบหลังจากเริ่มโปรแกรม
Milan Kerslager


8

ไปที่ Project -> app -> main -> res -> values ​​-> styles.xml

เปลี่ยนบรรทัดนี้หากคุณต้องการลบทุกมุมมอง

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

ถึง

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

หากคุณต้องการทำให้เป็นเพียงมุมมองเดียวคุณสามารถเปลี่ยนได้ในข้อมูลรายการที่เป็นคุณ ไปที่ Android -> รายการ -> AndroidManifest.xml ทำดังต่อไปนี้:

  1. ค้นหามุมมองที่คุณต้องการรับการเปลี่ยนแปลงประเภทนี้ <activity android:name"...">
  2. เพิ่ม android:theme=""@style/Theme.AppCompat.NoActionBar"

ฉันชอบวิธีนี้ ไม่เหมือนกับการตั้งค่า NoActionBar ในไฟล์ Manifest ซึ่งบังคับให้คุณลบธีม (หรือสไตล์) ที่ใช้อยู่แล้วเช่น Theme.MyApp ด้วยโซลูชันนี้เราสามารถแก้ไข Theme.MyApp และรักษาการปรับแต่งได้เล็กน้อย
MasterJEET


7

สิ่งนี้ใช้ได้ผลสำหรับฉันในการvalues/styles.xmlเพิ่มรายการ:

       `<item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>`

4
  1. เปิด styles.xml
  2. แทรก
 <style name="no_title" parent="AppTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowContentOverlay">@null</item>
 </style>

คุณสามารถเปลี่ยนชื่อ = "---------"

  1. เปิด Androidmaifest.xm

    ค้นหา android: theme = "@ style / AppTheme" เปลี่ยนเป็น android: theme = "@ style / no_title"

  2. คลิกเลือกธีมบนแถบเมนู (เป็นสีเขียวใกล้กับ MainActivity)

    • คลิกธีมโครงการ
    • คลิก no_title (ทางด้านขวามือของคุณ)
    • คลิกตกลง

4

สำหรับมือใหม่อย่างฉัน แค่ทำในสิ่งที่ฉันพูดจากโครงการ Android ของคุณ

แอป -> res -> ค่า -> style.xml

แทนที่รหัสนี้

<resources>

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

</resources>

สนุก.



2

ทำสิ่งนี้ในไฟล์รายการของคุณ:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

มันเปลี่ยนฉันไปใช้การออกแบบ Android แบบเก่า (พื้นหลังสีดำกล่องข้อความที่มีขอบสีเหลือง ... )
Jonas

ลองandroid:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen"ตรวจสอบให้แน่ใจว่าคุณใช้ api ระดับต่ำสุด 14
Rustam

คุณสามารถใช้สิ่งนี้สำหรับธีมเบา ๆ : android: theme = "@ style / Theme.AppCompat.Light.NoActionBar">
XIII


2

ลองเปลี่ยนสไตล์เป็น NoActionBar หากไม่ได้ผลให้เพิ่มรหัสนี้ในกิจกรรมหลักของคุณ

 protected void onCreate(Bundle savedInstanceState) {
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
        setContentView(R.layout.activity_main);

    }

2

สิ่งนี้ได้ผลสำหรับฉันฉันหวังว่างานนี้จะให้คุณเช่นกัน

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
}

1

วิธีที่ดีที่สุดคือใช้ฟังก์ชัน actionbar setTitle()หากคุณต้องการแสดงโลโก้หรือมีสิ่งอื่น ๆ ใน actionBar แต่ไม่ต้องการเห็นชื่อแอปเขียนโค้ดนี้ใน MainActivity.java หรือที่ใดก็ได้ที่คุณต้องการซ่อนชื่อในonCreate:

android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setIcon(R.mipmap.full_white_logo_m); // display logo
actionBar.setTitle(""); // hide title

วิธีนี้แอปของคุณจะไม่มีเหตุขัดข้อง


1

เพียงใช้setTitle(null)ด้านบน

toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

ชื่อเรื่องจะหายไปจากนั้นคุณสามารถใช้โลโก้ที่คุณเลือกได้ .....



1

ฉันประสบปัญหาเดียวกับคุณและแก้ปัญหานี้ได้เพียงแค่เปลี่ยนคลาสที่ฉันขยาย

//you will get the app that does not have a title bar at the top.
import android.app.Activity;
public class MainActivity extends Activity
{}

//you will get the app that has title bar at top
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity
{}

ฉันหวังว่านี่จะช่วยแก้ปัญหาของคุณได้


0

ในAndroidManifest.xmlแอปพลิเคชันของคุณคุณจะพบandroid:themeตัวอย่างเช่นตั้งค่าเป็น@style/AppTheme

ตอนนี้ไปที่styles.xmlค้นหาแท็กสไตล์ตรวจสอบให้แน่ใจว่าชื่อถูกตั้งค่าให้AppThemeเหมือนกับในรายการและตั้งค่าพาเรนต์เป็นandroid:Theme.Holo.Light.NoActionBar (ทำเช่นนี้ในสไตล์ (v21) หากคุณมีในโปรเจ็กต์ของคุณ)

<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">
    <!-- ... -->
</style>


0

ลอง: toolbar.setTitle ("");

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    toolbar.setTitle("");
    setSupportActionBar(toolbar);
}

ยินดีต้อนรับสู่ Stack Overflow! โปรดอย่าตอบด้วยซอร์สโค้ด พยายามให้คำอธิบายที่ดีเกี่ยวกับการทำงานของโซลูชันของคุณ ดู: ฉันจะเขียนคำตอบที่ดีได้อย่างไร? . ขอบคุณ
sɐunıɔןɐqɐp

0

ในการลบแถบชื่อเรื่อง (ซึ่งหมายความว่าแถบมีชื่อแอปของคุณ) ออกจากกิจกรรมฉันเพียงแค่เพิ่มบรรทัดด้านล่างในกิจกรรมนั้นในmanifests\AndroidManifest.xml:

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

ตอนนี้ควรมีลักษณะดังนี้

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

หวังว่าจะเป็นประโยชน์


0
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getSupportActionBar().hide();

    setContentView(R.layout.activity_main);

เพียงแค่ใส่getSupportActionBar().hide(); ระหว่างsuper.onCreateและsetContentViewวิธีการ

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