Xóa biểu tượng / logo khỏi thanh hành động trên Android


146

Tôi đã cố gắng tìm cách xóa biểu tượng / logo khỏi thanh hành động nhưng điều duy nhất tôi tìm thấy sau một giờ tìm kiếm tài liệu của SO, Android và Google là cách xóa toàn bộ thanh tiêu đề. Đó không phải là điều tôi muốn. Chỉ muốn xóa biểu tượng / logo khỏi thanh tiêu đề.

Có ai biết làm thế nào để thực hiện điều này? Tốt nhất là tôi muốn làm điều này trong XML .


1
Bạn có thể vừa đọc hướng dẫn API trên thanh hành động. Nó nói nó ngay trong hướng dẫn.
Mgamerz

6
Mỗi thông tin là một nơi nào đó được tìm thấy.
Hrafn

bạn có thể cho chúng tôi thấy những gì bạn đã cố gắng? những gì bạn đã tìm thấy trước đây không hoạt động?
DForck42

@ DForck42 Câu hỏi này thực sự không còn phù hợp nữa (gần 4 tuổi). Bạn có thể tìm thấy nhiều cách để đạt được điều này trong các câu trả lời dưới đây.
Hrafn

Câu trả lời:


58

Nếu bạn đã xác định android:logo="..."trong <application>thẻ của bạn AndroidManifest.xml, thì bạn cần sử dụng công cụ này để ẩn biểu tượng:

chủ đề trước v11

<item name="logo">@android:color/transparent</item>

v11 trở lên

<item name="android:logo">@android:color/transparent</item>

Việc sử dụng hai kiểu này đã ẩn đúng biểu tượng thanh hành động trên thiết bị 2.3 và 4.4 đối với tôi (ứng dụng này sử dụng AppCompat ).


Điều này hoạt động, nhưng trong trường hợp của tôi, khi tôi có chế độ xem tìm kiếm và nhấp vào nó / mở rộng nó, biểu tượng / logo ứng dụng của tôi sẽ xuất hiện lại. Có ý kiến ​​gì không?
acrespo 7/07/2015

@acrespo hmm Tôi biết bạn đang nói về điều gì nhưng tôi chưa tìm hiểu giải pháp cho vấn đề đó, xin lỗi.
Charles Madere

1
Những gì tôi đã kết thúc làm là thiết lập <application (...) android:logo="@android:color/transparent"> (...)trong tôi AndroidManifest.xmlbuộc và useLogocho displayOptionsvào phong cách của tôi như thế này <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Phần cuối cùng này rất quan trọng vì trong một số thiết bị (tôi nghĩ chủ yếu là sau kẹo mút), người tìm kiếm bị nguyền rủa đã lấy appIcon và đặt nó vào vị trí của logo, ngay cả khi logo được đặt trong suốt: s
acrespo

228

Thêm mã sau đây trong các kiểu thanh hành động của bạn:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS: Tôi đang sử dụng Actionbar Sherlock và điều này hoạt động tốt.


2
Một mẹo khá hay, cảm ơn! Nó thậm chí ngừng chiếm không gian trong thanh hành động!
Igor ordaš

6
Cảm ơn .. tôi cũng đã làm việc trong mã ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
Câu trả lời tuyệt vời ... :)
Bytecode

24
Một số thiết bị Samsung hiển thị màu @android:color/transparentĐEN. Có vẻ điên rồ, nhưng nhiều nhà sản xuất thiết bị ghi đè cài đặt mặc định của Android; bao gồm cả màu sắc. Bởi vì điều này, tôi sẽ tạo ra một màu trong colors.xml như thế này: <color name="transparent">#00000000</color>và tham chiếu thay vì nhận giá trị từ Android.
Matt W

1
@jose_GD: android: displayOptions chỉ là v11 trở lên, vì vậy bạn cần cả hai để tương thích ngược.
Nilzor

115

Nếu bạn không muốn biểu tượng trong hoạt động cụ thể.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

45
getActionBar (). setIcon (android.R.color.transparent); dường như là đủ
Cậu bé

phương thức gọi getActionBar () .... là giải pháp tốt hơn cho vấn đề này (loại bỏ biểu tượng khỏi thanh hành động) bởi vì nếu bạn sử dụng thanh điều hướng và thanh hành động, thì thanh hành động của bạn sẽ ở trên thanh điều hướng. Nếu bạn sử dụng setDisplayShowHomeEnables (false) thì thanh điều hướng sẽ ở trên thanh hành động và bạn không muốn điều này.
horkavlna

Tôi sẽ thay đổi điều này thành: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Không cần đặt giới hạn, biểu tượng trong suốt vẫn sử dụng hết dung lượng
Aedis

1
@Aedis: vẫn hiển thị khoảng trống ở bên trái của thanh hành động. bất kỳ đề xuất?
Rowan

Điều này hoạt động tốt nếu bạn chưa đặt logo. Trong trường hợp của tôi, tôi đã phải sử dụng setLogothay vì setIconphương pháp. Tuy nhiên, mẹo tuyệt vời, đã đưa tôi đi đúng hướng !!
luiscosta

49

Điều này làm việc cho tôi

getActionBar().setDisplayShowHomeEnabled(false);

2
Điều này đặt thanh hành động dưới tab / thanh điều hướng. Rõ ràng hành vi này là "theo thiết kế" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays

Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

Đây có vẻ như là câu trả lời - nếu không, bạn đang áp dụng một giải pháp toàn cầu, điều mà tôi nghi ngờ là điều ai cũng muốn. Trong trường hợp của tôi, tôi muốn hiển thị logo trên một số trang, nhưng các trang khác không có ý nghĩa và làm xáo trộn thanh hành động.
DiscDev 21/07/2015

28

Gọi điện thoại

mActionBar.setDisplayHomeAsUpEnabled(true);

ngoài

mActionBar.setDisplayShowHomeEnabled(false);

sẽ ẩn logo nhưng hiển thị biểu tượng Home As Up. :)


Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

@Hrafn - Tôi nghĩ rằng XML là câu trả lời ưa thích chứ không phải câu trả lời DUY NHẤT. :( Tôi đoán nó vẫn giúp được mọi người. :)
Atul O Holic

15

Hãy lưu ý rằng:

<item name="android:icon">@android:color/transparent</item>

Cũng sẽ làm cho các mục tùy chọn của bạn minh bạch.


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

12
getActionBar().setIcon(android.R.color.transparent);

Điều này làm việc cho tôi.


11

Xóa hoặc hiển thị tiêu đề bằng cách sử dụng:

getActionBar().setDisplayShowTitleEnabled(true);

Xóa hoặc hiển thị logo bằng cách sử dụng:

getActionBar().setDisplayUseLogoEnabled(false);

Xóa tất cả:

getActionBar().setDisplayShowHomeEnabled(false);

Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

9

bạn cũng có thể thêm mã bên dưới trong AndroidManifest.xml .

android:icon="@android:color/transparent"

Nó sẽ hoạt động tốt.

Nhưng tôi thấy rằng điều này mang đến một vấn đề vì biểu tượng launcher cũng trở nên trong suốt.

Vì vậy, tôi đã sử dụng:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

và nó hoạt động tốt.

Nhưng nếu bạn đang có nhiều hơn một hoạt động và muốn làm cho biểu tượng trên một hoạt động trở nên trong suốt thì cách tiếp cận trước đó sẽ hoạt động.


2

Tôi đã sử dụng nó và nó làm việc cho tôi.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

Chào mừng bạn đến với Stack tràn! Thông thường câu trả lời tương tự như của bạn được coi là chất lượng khá thấp. Để tham khảo trong tương lai, bạn nên xem xét thêm một số giải thích về mã bạn đã cung cấp và bạn nên cấu trúc mã tốt hơn (thêm 4 khoảng trắng vào đầu mỗi dòng hoặc chọn tất cả và nhấp vào biểu tượng {} phía trên hộp văn bản.) Ngoài ra, bạn nên chú ý hơn đến ngày của câu hỏi (hơn một năm trước) và thực tế là nó đã được trả lời (dấu kiểm màu xanh lá cây). Chúc may mắn với chương trình của bạn :)
Hristo Valkanov

Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

1

Tôi nghĩ rằng câu trả lời chính xác là: cho api 11 trở lên:

getActionBar().setDisplayShowHomeEnabled(false);

nếu không thì:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(vì nó cần một thư viện hỗ trợ.)


Không phải trong dù sao điều này trả lời câu hỏi. Tôi biết về tính năng này, nhưng tôi đã yêu cầu XML!
Hrafn

1

đi đến bảng kê khai của bạn và tìm thẻ ứng dụng

  android:icon="@android:color/transparent"// simply add this on place of your icon

..... ... ...


0

Câu trả lời của Qiqi Abaziz là ổn, nhưng tôi vẫn vật lộn trong một thời gian dài để nó hoạt động với gói tương thích và áp dụng kiểu dáng cho các yếu tố chính xác. Ngoài ra, tính minh bạch-hack là không cần thiết. Vì vậy, đây là một ví dụ hoàn chỉnh làm việc cho v8 trở lên:

giá trị \ style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (shell)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

0

Đi vào bảng kê khai của bạn và tìm hoạt động của bạn sau đó thêm mã này:

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

dòng trên ẩn của bạn Actionbar.

Nếu bạn cần tính năng khác, bạn có thể thấy các tùy chọn khác với (CLR + SPC).


0

Cách nhanh nhất là sửa đổi Manifest.xml của bạn. Ví dụ: nếu bạn muốn xóa logo của hoạt động "Hoạt động" và để lại logo trong các hoạt động khác, bạn có thể làm như sau:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

Không ai ở trên làm việc.

Nhưng điều này đã lừa

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(biểu tượng bị xóa khỏi thanh công cụ)

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.