안드로이드의 액션 바에서 아이콘 / 로고 제거


146

작업 표시 줄에서 아이콘 / 로고를 제거하는 방법을 찾으려고 노력했지만 SO, Android 설명서 및 Google을 검색 한 시간 후에 찾은 유일한 것은 제목 표시 줄을 완전히 제거하는 방법입니다. 그것은 내가 원하는 것이 아닙니다. 제목 표시 줄에서 아이콘 / 로고 만 제거하고 싶습니다.

아무도 이것을 달성하는 방법을 알고 있습니까? 바람직하게는 XML로 이것을하고 싶습니다 .


1
작업 표시 줄에서 API 안내서를 읽었을 수 있습니다. 가이드에 바로 나와 있습니다.
Mgamerz

6
모든 정보는 어디에서나 찾을 수 있습니다.
Hrafn

당신이 시도한 것을 우리에게 보여줄 수 있습니까? 이전에 발견했지만 작동하지 않는 것은 무엇입니까?
DForck42

@ DForck42이 질문은 더 이상 관련이 없습니다 (거의 4 세). 아래 답변에서이를 달성하는 많은 방법을 찾을 수 있습니다.
Hrafn

답변:


58

android:logo="..."<application>태그에 정의한 경우 AndroidManifest.xml다음 항목을 사용하여 아이콘을 숨겨야합니다.

v11 이전 테마

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

v11 이상 테마

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

이 두 가지 스타일을 사용하면 2.3 및 4.4 장치의 작업 표시 줄 아이콘이 제대로 숨겨 졌습니다 (이 응용 프로그램은 AppCompat 사용 ).


이것은 작동하지만 제 경우에는 검색보기가 있고 그것을 클릭 / 확장하면 내 앱 아이콘 / 로고가 다시 나타납니다. 어떤 아이디어?
acrespo

@acrespo 흠 나는 당신이 무슨 말을하는지 알고 있지만 그 해결책을 조사하지 못했습니다. 죄송합니다.
Charles Madere

1
내가 한 일은 <application (...) android:logo="@android:color/transparent"> (...)내 설정 AndroidManifest.xml과 같은 스타일로 강제 useLogo하는 displayOptions것입니다 <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. 이 마지막 부분은 일부 장치 (대부분 롤리팝 이후 대부분의 롤리팝이라고 생각합니다)에서 중요합니다. 손상된 검색 뷰가 appIcon을 가져 와서 로고 대신 투명하게 설정 한 경우에도 로고 대신 사용했습니다 : s
acrespo

228

작업 표시 줄 스타일에 다음 코드를 추가하십시오.

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

추신 : Actionbar Sherlock을 사용하고 있으며 정상적으로 작동합니다.


2
꽤 좋은 트릭입니다, 감사합니다! 심지어 작업 표시 줄에서 공간을 차지하지 않습니다!
Igor Čordaš

6
고마워 .. 그것은 또한 코드에서 일했다 ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
탁월한 답변 ... :)
바이트 코드

24
일부 삼성 장치 @android:color/transparent는 BLACK으로 표시 됩니다. 미친 것처럼 보이지만 많은 기기 제조업체가 Android의 기본 설정을 재정의합니다. 색깔을 포함하여. 이 때문에 colors.xml에 다음과 같이 색상을 만들고 <color name="transparent">#00000000</color>Android에서 값을 얻는 대신 참조합니다.
Matt W

1
@jose_GD : android : displayOptions는 v11 이상이므로 두 버전 모두 호환 가능해야합니다.
Nilzor

115

특정 활동에서 아이콘을 원하지 않는 경우.

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

45
getActionBar (). setIcon (android.R.color.transparent); 충분 해 보인다
Boy

탐색 메소드 및 조치 막대를 사용하는 경우 조치 막대가 탐색 막대 위에 있기 때문에 getActionBar () .... 메소드를 호출하면이 문제점이 더 나은 솔루션입니다 (작업 표시 줄에서 아이콘 제거). setDisplayShowHomeEnabled (false)를 사용하면 탐색 표시 줄이 조치 표시 줄 위에 있으며이를 원하지 않습니다.
horkavlna

나는이 변경 것 : ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); 경계를 설정하지 않고, 투명 아이콘은 여전히 공간까지 사용
Aedis

1
@Aedis : 작업 표시 줄 왼쪽에 여전히 빈 공간이 표시됩니다. 어떤 제안?
Rowan

로고를 설정하지 않은 경우 제대로 작동합니다. 내 경우 setLogo에는 setIcon방법 대신 사용해야 했습니다 . 아직도, 좋은 팁, 나를 올바른 길로 데려 갔다!!
luiscosta

49

이것은 나를 위해 일했다

getActionBar().setDisplayShowHomeEnabled(false);

2
그러면 작업 표시 줄이 탭 / 탐색 표시 줄 아래에 놓입니다. 분명히이 문제는 "설계"...입니다 code.google.com/p/android/issues/detail?id=36191
로저 Keays

어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

이것은 대답이되어야하는 것처럼 보입니다. 그렇지 않으면 글로벌 솔루션을 적용하고 있습니다. 모든 사람들이 원하는 것입니다. 필자의 경우 일부 페이지에 로고를 표시하고 싶지만 다른 페이지는 의미가 없으며 작업 표시 줄을 어지럽 힙니다.
DiscDev

28

부름

mActionBar.setDisplayHomeAsUpEnabled(true);

이외에도

mActionBar.setDisplayShowHomeEnabled(false);

로고는 숨겨 지지만 Home As Up 아이콘이 표시됩니다. :)


어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

@Hrafn-XML이 유일한 대답이 아닌 선호되는 대답이라고 생각했습니다. :( 아직도 사람들을 돕는 것 같아요. :)
Atul O Holic

15

다음을 명심하십시오 :

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

또한 옵션 항목을 투명하게 만듭니다.


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

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

어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

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

이것은 나를 위해 일했습니다.


11

다음을 사용하여 제목을 제거하거나 표시하십시오.

getActionBar().setDisplayShowTitleEnabled(true);

다음을 사용하여 로고를 제거하거나 표시하십시오.

getActionBar().setDisplayUseLogoEnabled(false);

모두 제거:

getActionBar().setDisplayShowHomeEnabled(false);

어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

9

AndroidManifest.xml 에서 아래 코드를 추가 할 수도 있습니다 .

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

잘 작동합니다.

그러나 런처 아이콘이 투명 해지면 문제가되는 것으로 나타났습니다.

그래서 나는 다음을 사용했다.

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

잘 작동했습니다.

그러나 둘 이상의 활동이 있고 활동의 아이콘을 투명하게 만들려면 이전 방법이 작동합니다.


2

나는 이것을 사용했고 그것은 나를 위해 일했다.

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

어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

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

스택 오버플로에 오신 것을 환영합니다! 일반적으로 귀하와 비슷한 답변은 다소 품질이 낮은 것으로 간주됩니다. 나중에 참조 할 수 있도록 제공 한 코드에 대한 설명을 추가하고 코드를보다 잘 구성해야합니다 (각 줄의 시작 부분에 4 개의 공백을 추가하거나 모두 선택하고 텍스트 상자 위의 {} 기호를 클릭하십시오). 질문 날짜 (1 년 전)와 이미 답변 된 사실 (녹색 확인 표시)에 더주의를 기울여야합니다. 프로그래밍에 행운을 빕니다 :)
Hristo Valkanov

어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

1

정확한 답변은 다음과 같습니다. api 11 이상 :

getActionBar().setDisplayShowHomeEnabled(false);

그렇지 않으면:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(지원 라이브러리가 필요하기 때문에)


어쨌든 이것은 질문에 대답하지 않습니다. 이 기능에 대해 알고 있었지만 XML을 요청했습니다!
Hrafn

1

매니페스트로 이동하여 응용 프로그램 태그를 찾으십시오.

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

..... ... ...


0

Qiqi Abaziz의 대답은 괜찮지 만 여전히 호환 팩으로 작업하고 올바른 요소에 스타일을 적용하는 데 오랜 시간 동안 어려움을 겪었습니다. 또한 투명성 해킹은 불필요합니다. v8 이상에서 작동하는 완전한 예제는 다음과 같습니다.

values ​​\ styles.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 (쉘)

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

매니페스트로 이동하여 활동을 찾은 다음이 코드를 추가하십시오.

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

위의 줄을 숨 깁니다 Actionbar.

다른 기능이 필요한 경우 (CLR + SPC)를 사용하여 다른 옵션을 볼 수 있습니다.


0

가장 빠른 방법은 Manifest.xml을 수정하는 것입니다. 예를 들어 활동 "활동"의 로고를 제거하고 다른 활동에 로고를 남겨 두려면 다음을 수행 할 수 있습니다.

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

0

위의 어느 것도 효과가 없었습니다.

그러나 이것은 트릭을 수행했습니다.

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(툴바에서 제거 된 아이콘)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.