Làm cách nào để xóa văn bản tiêu đề khỏi Thanh tác vụ Android?


106

Tôi đang xem qua Holo.Lightchủ đề và dường như tôi không thể tìm thấy phong cách kỳ diệu để ghi đè để loại bỏ văn bản tiêu đề hiển thị ngắn gọn khi ứng dụng của tôi khởi chạy lần đầu.

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


216

Thử:

 getActionBar().setDisplayShowTitleEnabled(false);

Đối với v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
bạn sẽ vẫn nhìn thấy tiêu đề trong khi thanh hành động đang tải mà không phải là những gì bạn muốn. giải pháp phù hợp là những gì m3n0R đề xuất.
numan salati

12
nó phải là getSupportActionBar (). setDisplayShowTitleEnabled (false); cho v7. othewise nó sẽ tạo ra vô con trỏ execption
Amir

5
@numansalati m3n0R là ai? Tôi đã tìm kiếm trang và tìm thấy điều gì
ka3ak

Khi nào tôi nên gọi các phương pháp này? Ý tôi là nó nên được gọi từ phương thức nào (hoạt động, phân mảnh)?
ka3ak

94

Tôi nghĩ đây là câu trả lời đúng:

<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>

Còn Android 4 thì sao? Tôi không sử dụng ActionBarSherlock nên không có tài nguyên nào được đặt tên Widget.Sherlock.Light.ActionBar.Solid.Inverse. Tôi nên sử dụng phụ huynh nào?
Alex Semeniuk

Chủ đề Holo. Theo mặc định, có 3 chủ đề holo mà bạn có thể mở rộng.
cesards

Điều này hoạt động để ẩn tiêu đề trong lần khởi chạy đầu tiên. Trong một hoạt động khác, gọi setTitle không hoạt động. Có cách nào để hoán đổi kiểu thanh hành động trong thời gian chạy không?
speedynomads

thiết lập chủ đề mặc định trong thời gian chạy :)
cesards

@ domji84, Bạn có thể chỉ định chủ đề của từng hoạt động trong tệp kê khai.
ashishduh

63

Tôi là người mới sử dụng Android nên hãy sửa tôi nếu tôi sai, nhưng tôi nghĩ nếu bạn quyết định sử dụng các tab điều hướng trên Thanh tác vụ, chúng dường như không được căn trái hoàn toàn vì màu văn bản tiêu đề chỉ trong suốt và ẩn ' t đi xa.

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

đã làm cho tôi.


vâng, bạn là sai, không có các tab trong câu hỏi và không có ánh sáng holo trong câu trả lời của bạn
miky

Trong khi tôi thử điều này, tôi nhận được lỗi này, @android: style / Widget.Holo.ActionBar yêu cầu cấp API 11 (tối thiểu hiện tại là 10).
jrhamza

Nếu tôi muốn gán kiểu này cho thanh tác vụ của một hoạt động cụ thể chứ không phải cho tất cả các hoạt động trong ứng dụng của tôi. Tôi làm nó như thế nào? tôi đặt dòng 'android: displayOptions' ở đâu? trong Menu.xml? Trong AndroidMenifest.xml?
GyRo

43

Hiểu rồi. Bạn phải ghi đè

android:actionBarStyle

và sau đó trong phong cách tùy chỉnh của bạn, bạn phải ghi đè

android:titleTextStyle

Đây là một mẫu.

Trong themes.xml của tôi:

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

Và trong styles.xml của tôi:

<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>

Tôi không chắc tại sao việc đặt textSize thành 0 không thực hiện được thủ thuật (nó thu nhỏ văn bản, nhưng không làm cho nó biến mất), nhưng việc đặt textColor thành trong suốt.


3
Vâng, điều đó đã giúp. Bất kỳ ý tưởng tại sao android:visibility=gonekhông có hiệu lực? Hoặc tốt hơn, tại sao setDisplayShowTitleEnabledvẫn hiển thị văn bản tiêu đề trong khi thanh đang tải?
Matthias

7
Sử dụng <item name = "android: displayOptions"> useLogo | showHome </ item> thay vì thiết lập kích thước 0
Jerome VDL

23

Trong Tệp kê khai của bạn

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

33
Điều này không làm việc, nhưng sẽ ngừng ứng dụng của bạn xuất hiện trong trình chọn của ứng dụng Recently used '
Rupert Bates

1
điều này làm cho các ứng dụng không có tên trên các ứng dụng điện thoại / main màn hình
Nimitack

13

Viết câu lệnh này dưới

setContentView(R.layout.activity_main);

getSupportActionBar().setDisplayShowTitleEnabled(false);

nếu mở rộng sử dụng AppCompactActivity getSupportActionbar()nếu mở rộng việc sử dụng Hoạt động getActionBar()khác, nó có thể cung cấp

null pointer exception

sử dụng android:label=""trong AndroidManifest.xml cho hoạt động cũng hoạt động nhưng ứng dụng của bạn sẽ không xuất hiện trongRecently used apps


9

bạn có hai lựa chọn:

thứ nhất:

getActionBar().setDisplayShowTitleEnabled(false);

Nếu usign getActionBar()tạo ra ngoại lệ con trỏ null, bạn nên sử dụng getSupportActionBar()

Second

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

hoặc là

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

6

tôi sử dụng mã này trong tệp kê khai ứng dụng

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

tệp biểu trưng của tôi là 200 * 800 pixel và sử dụng mã này trong hoạt động chính.java

getActionBar().setDisplayShowTitleEnabled(false);

nó sẽ hoạt động Corectly


6

Tôi đã thử cái này. Điều này sẽ giúp -

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

getSupportActionBar nên được gọi sau setSupportActionBar, do đó thiết lập thanh công cụ, nếu không, NullpointerException vì không có bộ thanh công cụ. Hi vọng điêu nay co ich


5

Bạn có thể thay đổi kiểu áp dụng cho từng hoạt động hoặc nếu bạn chỉ muốn thay đổi hành vi cho một hoạt động cụ thể, bạn có thể thử cách này:

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

Để hiển thị tiêu đề trên thanh tác vụ, hãy đặt các tùy chọn hiển thị trong onCreate ()

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

Để ẩn tiêu đề trên thanh tác vụ.

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

Thông tin chi tiết tại đây .


3

Điều duy nhất thực sự hiệu quả với tôi là thêm:

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

cũng là câu trả lời "sai", tuy nhiên nó giúp tôi với một trường hợp tương tự :)
Javier

1
Đừng làm điều này vì nó sẽ làm hỏng ứng dụng của bạn khi được thu nhỏ
jfcartier

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

hy vọng điều này sẽ giúp


2

Sử dụng như sau:

requestWindowFeature(Window.FEATURE_NO_TITLE);

Bạn không thể làm điều đó nếu đang sử dụng ActionBar. Nếu bạn cố gắng làm điều này, ứng dụng sẽ ngay lập tức bị sập khi mở.
Christopher Perry

@ChristopherPerry không đúng. bạn có thể sử dụng điều này để xóa thanh hành động trong mã, miễn là bạn thực hiện trước khi gọi setContentView.
numan salati

tuy nhiên, điều này đang xóa toàn bộ thanh hành động thay vì chỉ tiêu đề của nó!
bofredo

2

Nếu bạn chỉ muốn làm điều đó cho một hoạt động và thậm chí có thể động, bạn cũng có thể sử dụng

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

1

như một giải pháp thay thế chỉ cần thêm dòng này trong trường hợp bạn có các thanh công cụ / hành động tùy chỉnh

this.setTitle("");

trong Hoạt động của bạn


1

Mặc dù tất cả những điều này đều được chấp nhận, nhưng nếu hoạt động của bạn chỉ chứa một hoạt động chính, bạn có thể chỉnh sửa res\values\styles.xmlnhư vậy:

<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>

Tôi đã cập nhật parentvà thêm thuộc tính .NoActionBar vào chủ đề Ánh sáng từ Android Studios Create Blank ApplicationWizard.


Điều đó sẽ vô hiệu hóa toàn bộ thanh tác vụ không chỉ tiêu đề. Và nếu bạn muốn tạo thanh tác vụ trống, bạn sẽ phải làm điều đó cho mỗi lần xem.
AlwaysConfused,

1

Chỉ cần mở rộng tệp java của bạn từ AppCompatActivityvà thực hiện việc này:

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

0

Trong trang manifest.xml, bạn có thể cung cấp địa chỉ cho nhãn hoạt động của mình. địa chỉ ở đâu đó trong giá trị / string.xml của bạn. thì bạn có thể thay đổi giá trị của thẻ trong tệp xml thành null.

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

0

Tôi mới sử dụng Android nên có thể tôi đã nhầm ... nhưng để giải quyết vấn đề này, chúng tôi không thể đi tới tệp kê khai và xóa nhãn hoạt động

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

        **android:label="" >**

Đã làm cho tôi....


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

3
@Matteo Mặc dù nó có thể hoạt động, nhưng nó chắc chắn là sơ sài và không phải là cách thích hợp để thực hiện. Trên thực tế, nó không thực sự loại bỏ văn bản tiêu đề, nó chỉ đặt nó thành "", để bạn không thể nhìn thấy nó.
user1234
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.