คุณจะลบข้อความชื่อเรื่องออกจาก Android ActionBar ได้อย่างไร?


105

ฉันกำลังมองหาHolo.Lightธีมต่างๆและดูเหมือนว่าฉันจะไม่พบรูปแบบเวทมนตร์ที่จะลบล้างเพื่อกำจัดข้อความชื่อเรื่องที่แสดงสั้น ๆ เมื่อแอปของฉันเปิดตัวครั้งแรก

ฉันจะทำเช่นนั้นได้อย่างไร?

คำตอบ:


215

ลอง:

 getActionBar().setDisplayShowTitleEnabled(false);

สำหรับ v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
คุณจะยังคงเห็นชื่อในขณะที่แถบการทำงานกำลังโหลดซึ่งไม่ใช่สิ่งที่คุณต้องการ ทางออกที่เหมาะสมคือสิ่งที่ m3n0R แนะนำ
numan salati

12
ควรเป็น getSupportActionBar (). setDisplayShowTitleEnabled (false); สำหรับ v7 ในมิฉะนั้นจะทำให้เกิดการดำเนินการตัวชี้ที่เป็นโมฆะ
Amir

5
@numansalati m3n0R คือใคร? ฉันค้นหาหน้าเว็บแล้วไม่พบอะไรเลย
ka3ak

เมื่อไหร่ที่ฉันควรแคลวิธีการ? ฉันหมายถึงวิธีใด (กิจกรรมชิ้นส่วน) ที่ควรเรียกว่า?
ka3ak

94

ฉันคิดว่านี่คือคำตอบที่ถูกต้อง:

<style name="AppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="android:displayOptions">showHome|useLogo</item>
    <item name="displayOptions">showHome|useLogo</item>
</style>

แล้ว Android 4 ล่ะ? ฉันไม่ได้ใช้ ActionBarSherlock Widget.Sherlock.Light.ActionBar.Solid.Inverseเพื่อให้มีทรัพยากรที่ไม่มีชื่อ ฉันควรใช้ผู้ปกครองอะไร
Alex Semeniuk

ธีม Holo โดยค่าเริ่มต้นจะมีธีม holo 3 แบบที่คุณสามารถขยายได้
cesards

ใช้สำหรับซ่อนชื่อในการเปิดตัวครั้งแรก ในกิจกรรมอื่นที่เรียก setTitle ไม่ทำงาน มีวิธีสลับสไตล์แถบการดำเนินการที่รันไทม์หรือไม่?
speedynomads

การตั้งค่าธีมเริ่มต้นบนรันไทม์ :)
cesards

@ domji84 คุณสามารถระบุธีมของแต่ละกิจกรรมในไฟล์รายการ
ashishduh

63

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

<style name="CustomActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
     <item name="android:displayOptions">useLogo|showHome</item>
</style>

ทำงานให้ฉัน


ใช่คุณคิดผิดไม่มีแท็บที่เป็นปัญหาและไม่มีแสงโฮโลในคำตอบของคุณ
miky

ขณะที่กำลังลองสิ่งนี้ฉันได้รับข้อผิดพลาดนี้ @android: style / Widget.Holo.ActionBar ต้องการ API ระดับ 11 (ขั้นต่ำปัจจุบันคือ 10)
jrhamza

หากฉันต้องการกำหนดรูปแบบนี้ให้กับแถบการทำงานของกิจกรรมเฉพาะไม่ใช่สำหรับกิจกรรมทั้งหมดของแอปพลิเคชันของฉัน ฉันจะทำมันได้อย่างไร? ฉันจะวางบรรทัด "android: displayOptions" ไว้ที่ไหน ใน Menu.xml? ใน AndroidMenifest.xml?
GyRo

43

เข้าใจแล้ว คุณต้องลบล้าง

android:actionBarStyle

จากนั้นในรูปแบบที่คุณกำหนดเองคุณต้องลบล้าง

android:titleTextStyle

นี่คือตัวอย่าง

ใน themes.xml ของฉัน:

<style name="CustomActionBar" parent="android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/CustomActionBarStyle</item>
</style>

และใน styles.xml ของฉัน:

<style name="CustomActionBarStyle" parent="android:style/Widget.Holo.ActionBar">
        <item name="android:titleTextStyle">@style/NoTitleText</item>
        <item name="android:subtitleTextStyle">@style/NoTitleText</item>
</style>

<style name="NoTitleText">
        <item name="android:textSize">0sp</item>
        <item name="android:textColor">#00000000</item>
</style>

ฉันไม่แน่ใจว่าทำไมการตั้งค่า textSize เป็นศูนย์ไม่ได้ทำเคล็ดลับ (มันหดตัวข้อความ แต่ไม่ได้ทำให้มันหายไป) แต่การตั้งค่า textColor เป็นแบบโปร่งใส


3
ใช่นั่นช่วยได้ คิดว่าทำไมandroid:visibility=goneไม่มีผล? หรือดีกว่าเหตุใดจึงsetDisplayShowTitleEnabledยังคงแสดงข้อความชื่อเรื่องในขณะที่แถบกำลังโหลด
Matthias

7
ใช้ <item name = "android: displayOptions"> useLogo | showHome </item> แทนการตั้งค่าขนาดเป็น 0
Jerome VDL

23

ในรายการของคุณ

<activity android:name=".ActivityHere"
     android:label="">

33
วิธีนี้ใช้งานได้ แต่จะหยุดแอปของคุณปรากฏในตัวเลือก 'แอปที่ใช้ล่าสุด'
Rupert Bates

1
ทำให้แอปไม่มีชื่อบนแอปพลิเคชั่นโทรศัพท์ / หน้าจอหลัก
Nimitack

13

เขียนข้อความนี้ใต้

setContentView(R.layout.activity_main);

getSupportActionBar().setDisplayShowTitleEnabled(false);

หากขยายการใช้ AppCompactActivity getSupportActionbar()หากขยายการใช้งานกิจกรรมgetActionBar()อื่นอาจให้

null pointer exception

การใช้ android:label=""ในAndroidManifest.xml กิจกรรมก็ใช้ได้เช่นกัน แต่แอปของคุณจะไม่ปรากฏในRecently used apps


9

คุณมีสองทางเลือก: ประการ

แรก:

getActionBar().setDisplayShowTitleEnabled(false);

หาก usign getActionBar()สร้างข้อยกเว้นของตัวชี้ null คุณควรใช้getSupportActionBar()

Second

getSupportActionBar().setTitle("your title");

หรือ

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().hide();

6

ฉันใช้รหัสนี้ในรายการแอป

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:logo="@drawable/logo2"
        android:label="@string/title_text"
        android:theme="@style/Theme.Zinoostyle" >

ไฟล์โลโก้ของฉันคือ 200 * 800 พิกเซลและใช้รหัสนี้ใน main activity.java

getActionBar().setDisplayShowTitleEnabled(false);

มันจะใช้งานได้จริง


6

ฉันลองสิ่งนี้แล้ว สิ่งนี้จะช่วย -

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);

ควรเรียก getSupportActionBar หลังจาก setSupportActionBar ดังนั้นการตั้งค่าแถบเครื่องมือมิฉะนั้น NullpointerException เนื่องจากไม่มีการตั้งค่าแถบเครื่องมือ หวังว่านี่จะช่วยได้


5

คุณสามารถเปลี่ยนรูปแบบที่ใช้กับแต่ละกิจกรรมหรือหากคุณต้องการเปลี่ยนพฤติกรรมสำหรับกิจกรรมใดกิจกรรมหนึ่งเท่านั้นคุณสามารถลองทำดังนี้

setDisplayOptions(int options, int mask) --- Set selected display 
  or
setDisplayOptions(int options) --- Set display options.

หากต้องการแสดงหัวเรื่องบนแถบการดำเนินการตั้งค่าตัวเลือกการแสดงใน onCreate ()

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);

เพื่อซ่อนชื่อบนแถบการดำเนินการ

getSupportActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

รายละเอียดที่นี่ .


3

สิ่งเดียวที่ได้ผลสำหรับฉันคือการเพิ่ม:

<activity 
    android:name=".ActivityHere"
    android:label=""
>

เป็นคำตอบที่ "ผิด" แต่มันช่วยฉันด้วยกรณีที่คล้ายกัน :)
Javier

1
อย่าทำเช่นนี้เพราะจะทำให้แอปพลิเคชันของคุณพังเมื่อย่อขนาด
jfcartier


2

ใช้สิ่งต่อไปนี้:

requestWindowFeature(Window.FEATURE_NO_TITLE);

คุณไม่สามารถทำได้หากคุณใช้ ActionBar หากคุณพยายามทำเช่นนี้แอปจะหยุดทำงานทันทีเมื่อเปิดขึ้น
Christopher Perry

@ChristopherPerry ไม่เป็นความจริง คุณสามารถใช้สิ่งนี้เพื่อลบแถบการดำเนินการในโค้ดหากคุณทำก่อนที่จะเรียกใช้ setContentView
numan salati

แม้ว่านี่จะเป็นการลบแถบการทำงานทั้งหมดแทนที่จะเป็นแค่ชื่อ!
bofredo

2

หากคุณต้องการทำเพียงกิจกรรมเดียวและอาจเป็นแบบไดนามิกคุณยังสามารถใช้

ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(actionBar.getDisplayOptions() ^ ActionBar.DISPLAY_SHOW_TITLE);

1

เป็นวิธีแก้ปัญหาเพียงเพิ่มบรรทัดนี้ในกรณีที่คุณมีการดำเนินการ / แถบเครื่องมือที่กำหนดเอง

this.setTitle("");

ในกิจกรรมของคุณ


1

แม้ว่าทั้งหมดนี้จะยอมรับได้ แต่หากกิจกรรมของคุณมีเพียงกิจกรรมหลักคุณสามารถแก้ไขได้res\values\styles.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>

ฉันได้อัปเดตparentและเพิ่มคุณสมบัติ. NoActionBar ให้กับธีม Light จาก Android Studios Create Blank ApplicationWizard


ซึ่งจะปิดใช้งานแถบการทำงานทั้งหมดไม่เพียง แต่ชื่อเรื่อง และถ้าคุณต้องการสร้างแถบการทำงานว่างคุณจะต้องทำทุกมุมมอง
AlwaysConfused

1

เพียงแค่ขยายไฟล์ java ของคุณAppCompatActivityและทำสิ่งนี้:

ActionBar actionBar = getSupportActionBar(); // support.v7
actionBar.setTitle(" ");

0

ในหน้า manifest.xml ของคุณคุณสามารถระบุที่อยู่ให้กับป้ายกำกับกิจกรรมของคุณได้ ที่อยู่อยู่ในค่า / strings.xml ของคุณ จากนั้นคุณสามารถเปลี่ยนค่าของแท็กในไฟล์ xml เป็น null

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title_main_activity"></string>
</resources>

0

ฉันยังใหม่กับ Android ดังนั้นฉันอาจจะคิดผิด ... แต่ในการแก้ปัญหานี้ทำไม่ได้เราแค่ไปที่ไฟล์ Manifest และลบป้ายกำกับกิจกรรม

<activity
        android:name=".Bcft"
        android:screenOrientation="portrait"

        **android:label="" >**

ทำงานให้ฉัน ....


-3
ActionBar actionBar = getActionBar();
actionBar.setTitle("");

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