ลบชื่อเรื่องใน Toolbar ใน appcompat-v7


170

เอกสารของToolbarกล่าวว่า

หากแอปใช้ภาพโลโก้ก็ควรพิจารณาละเว้นชื่อและคำบรรยายอย่างยิ่ง

วิธีที่เหมาะสมในการลบชื่อเรื่องคืออะไร?


ปัญหาอยู่ที่ไหนถ้าคุณเพิ่งตั้งเป็นสตริงว่างเปล่า ฉันไม่คิดว่าคุณจะต้องใช้เลย์เอาต์ที่กำหนดเองซึ่งเพิ่งใช้ไอคอน คิดว่ามันเกินจริงเหรอ?
Wagner Michael

3
@maffelbaffel ไม่มีอะไรผิดปกติกับการตั้งค่าสตริงว่าง แต่มันรู้สึกไม่เหมาะสม แต่แท้จริงแล้วการใช้เลย์เอาต์ที่กำหนดเองจะทำให้เกินความเป็นจริง
timemanx

1
ฉันต้องทำ:toolbar.setTitle("");
Ferran Maylinch

1
@FerranMaylinch ใช่มันใช้ได้กับฉันด้วย! ฉันใช้ toolbar.setTitle (null); ซึ่งส่งผลให้ชื่อแอปพลิเคชันเป็นชื่อเริ่มต้น ดังนั้นฉันจึงตั้งค่าtoolbar.setTitle (""); ซึ่งทำงานได้ดี
ULHAS PATIL

คำตอบ:


554
getSupportActionBar().setDisplayShowTitleEnabled(false);

4
คำตอบนี้และคำตอบของ David_E ทำงานได้จากฉันหากถูกเรียกหลังจากโทรsetSupportActionBar()มา การเลือกคำตอบนี้เพราะนี่เป็นวิธีที่เป็นทางการที่จะทำตามการอ้างอิงอย่างเป็นทางการ:Set whether an activity title/subtitle should be displayed.
C0D3LIC1OU5

ฉันใช้สำหรับแถบเครื่องมือเช่น actionbar เท่านั้น แต่ไม่ใช่สำหรับ toobar ที่สะอาด!
iscariot

2
วิธีลบออกโดยใช้ style.xml โปรดช่วยฉันด้วย
Anand Savjani

ทำงานให้ฉัน คุณต้องใช้ "appcompat_v7: v21" เพื่อให้มันใช้งานได้
V_J

คุณต้องตรวจสอบว่าข้างต้นจะไม่สร้าง NullPonterException โดยทำ: ถ้า (getSupportActionBar ()! = null) getSupportActionBar () setDisplayShowTitleEnabled (false);
iOSAndroidWindowsMobileAppsDev

68

วิธีที่ถูกต้องในการซ่อน / เปลี่ยนชื่อแถบเครื่องมือคือ:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);

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

ดูที่นี่


9
setTitle (null) ส่งผลให้ชื่อแอปกลายเป็นชื่อ .. setTitle ("") ทำงานให้ฉัน
user1354603

1
ใน xml ฉันเพิ่ม <แถบเครื่องมือ app: title = "" // title คือช่องว่าง ทำงาน
Dan Alboteanu

21

ลองสิ่งนี้ ...

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_landing_page); 

    .....

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

    .....

 }

19

เหตุผลสำหรับคำตอบของฉันนี้เป็นเพราะคำตอบ upvoted ที่สุดเองไม่สามารถแก้ปัญหาของฉัน ฉันพบปัญหานี้ด้วยการทำเช่นนี้

<activity android:name="NAME OF YOUR ACTIVITY"
    android:label="" />

หวังว่านี่จะช่วยผู้อื่นด้วย


2
นี่ไม่ใช่ความคิดที่ดี หากคุณมี<intent-filter>กิจกรรมนั้นเพื่อให้ผู้ใช้สามารถเปิดแอปของคุณโดยคลิกที่ URL (ตัวอย่าง) กล่องโต้ตอบแก้ความกำกวมจะไม่มีชื่อใด ๆ !
อัลเบิร์ตวิลา Calvo

10

อีกวิธีในการลบชื่อออกจากคุณToolbarคือทำnullแบบนั้น:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
toolbar.setTitle(null);

4

นี้

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    //toolbar.setNavigationIcon(R.drawable.ic_toolbar);
    toolbar.setTitle("");
    toolbar.setSubtitle("");
    //toolbar.setLogo(R.drawable.ic_toolbar);


2

คุณสามารถใช้การร้องอย่างใดอย่างหนึ่งเป็นทั้งการทำงานแบบเดียวกัน: getSupportActionBar().setDisplayShowTitleEnabled(false); และ getSupportActionBar().setTitle(null);

ใช้ที่ไหน:

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

หรือ :

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle(null);

2
 Toolbar actionBar = (Toolbar)findViewById(R.id.toolbar);
    actionBar.addView(view);
    setSupportActionBar(actionBar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);

จดบรรทัดนี้ getSupportActionBar().setDisplayShowTitleEnabled(false);


actionBar.addView (มุมมอง); เป็นมุมมองที่กำหนดเองฉันกำลังเพิ่มแถบเครื่องมือ
suulisin


1

วิธีที่ถูกต้องในการซ่อนหัวเรื่อง / ฉลากของแถบเครื่องมือรหัสต่อไปนี้:

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(null);

1

ฉันไม่รู้ว่านี่เป็นวิธีที่ถูกต้องหรือไม่ แต่ฉันเปลี่ยนสไตล์ของฉันเช่นนี้

<style name="NoActionBarStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>


1

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

ฉันเริ่มต้นด้วยการเขียนโปรแกรม Android และต่อสู้เพื่อค้นหาโซลูชันที่เหมาะสม

เพียงแค่เปลี่ยนไฟล์ manifest ( AndroidManifest.xml) styles.xmlไม่เพียงพอเพราะความจำเป็นในสไตล์ที่จะกำหนดไว้ล่วงหน้า ยังไม่มีประโยชน์เปลี่ยนไฟล์เค้าโครง

โซลูชันที่เสนอทั้งหมดในJavaหรือKotlinล้มเหลวสำหรับฉัน บางคนใช้แอปผิดพลาด และถ้าไม่มีใคร (อย่างฉัน) ตั้งใจที่จะใช้แถบชื่อเรื่องในแอปโซลูชันคงที่นั้นสะอาดกว่า

สำหรับฉันทางออกเดียวที่ใช้ได้ในปี 2019 (Android Studio 3.4.1) คือ:

ในstyles.xml(ใต้แอพ / res / values) เพิ่มบรรทัด:

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

หลังจากในAndroidManifest.xml(ใต้แอป / รายการ)

แทนที่

android:theme="@style/AppTheme">

โดย

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

0

ไม่มีใครพูดถึง:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }

อ่านคำถามอย่างรอบคอบก่อนตอบ OP ได้ขอให้ลบชื่อออกจากแถบเครื่องมือ
Bhavik Mehta


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