Android : ActionBar "홈"아이콘을 앱 아이콘이 아닌 다른 것으로 변경하는 방법은 무엇입니까?


114

내 응용 프로그램의 기본 아이콘은 하나의 이미지에서 로고와 그 아래에있는 몇 글자의 두 부분으로 구성됩니다. 이것은 앱의 런처 아이콘에서 잘 작동하지만 아이콘이 ActionBar의 왼쪽 가장자리에 나타나면 글자가 잘리고보기에 좋지 않습니다.

ActionBar에 별도의 아이콘 버전을 제공하고 싶습니다. "로고"부분 만 있고 그 아래의 문자는 없지만 지금까지 비어 있습니다. 솔직히 이것에 대한 답을 찾을 수없고 질문 자체도 어디에서도 찾을 수 없습니다.

답변:


218

ActionBar는 매니페스트 의 android : logo 속성 (제공된 경우) 을 사용합니다 . 이를 통해 아이콘 (Launcher) 및 로고 (특히 ActionBar)에 대해 별도의 드로어 블 리소스를 사용할 수 있습니다.


2
네. 작업 표시 줄에 사용자 정의 스타일을 사용하여 매니페스트에서 제공하는 대신 사용할 로고 또는 아이콘을 제공 할 수도 있습니다.
— adamp 2011-06-15

@Joe, APPCOMPAT API를 사용하여 <11 없음 용액
— cafebabe1991

49

AndroidManifest.xml에서 :

<application
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:name="com..."
    android:theme="@style/Theme">...</Application>

styles.xml에서 : (참고 android:icon)

<style name="Theme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:icon">@drawable/icon</item>
</style>

android : logo 도 작동합니다. 나는 차이를 모른다.
— AlikElzin-kilaka

치유 상처를 찢어서 미안합니다 :-) 그러나 차이점은 여기에 제안 된 스타일 변경 솔루션이 사용자 지정 아이콘을 작업 표시 줄에만 적용한다는 것 android:logo입니다. 매니페스트 에서를 정의하면 다른 영역에도 영향을 미칠 수 있습니다.
— DBM

@dbm, '다른 영역'의 예를 들어 주시겠습니까?
— AlikElzin-kilaka

2
참으로 나는 호기심 나는 그것을 googleing 시작했고이 안드로이드 개발자 사이트의 말씀입니다 : developer.android.com/guide/topics/manifest/... . 하지만 이것이 andorid:icon속성과 어떻게 다른지는 분명하지 않습니다 . developer.android.com/guide/topics/manifest/…
— dbm

2
작업 표시 줄 문서android:icon 에는 <activity>요소에 추가 할 수 있으므로 다양한 활동에 대해 쉽게 변경할 수 있다고합니다. 나는 그것을 시도했고 그것은 훌륭하게 작동했습니다. 사용자 지정 테마를 엉망으로 만들거나 모든 활동에 영향을 미칠까 걱정할 필요가 없습니다.
— Jason


8

AppCompat를 사용하는 경우 Gingerbread (API 10) 이하를 실행하는 기기에서 ActionBar 아이콘을 설정하는 유일한 방법은 매니페스트의 모든 활동에서 android : icon 속성을 설정하거나 드로어 블을 프로그래밍 방식으로 설정하는 것입니다.

<manifest>
    <application>
        ...
        <activity android:name="com.your.ActivityName"
            ...
            android:icon="@drawable/ab_logo"/>
        ...
   </application>
</manifest>

업데이트 : 그러나 실행 활동에 android : icon 속성을 설정하면 애플리케이션 아이콘이 재정의된다는 경고를받습니다. 내가 아는 유일한 해결 방법은 스플래시 또는 더미 활동을 갖는 것입니다. 그러면 기본 활동이 시작됩니다.


작동하지 않습니다 !! 시도해 보셨습니까? 필요한 솔루션을 찾으십시오.
— Apurva

8

TheIT에서 영감을 받아 매니페스트 파일을 조작하여 약간 다른 방식으로 작동하도록했습니다. 대부분의 활동이 아이콘을 갖도록 애플리케이션 설정에서 아이콘을 설정하십시오. 로고를 표시하려는 활동에서 android : logo 속성을 활동 선언에 추가합니다. 다음 예제에서는 LogoActivity에만 로고가 있어야하며 나머지는 기본적으로 icon으로 설정됩니다.

<application
    android:name="com.your.app"
    android:icon="@drawable/your_icon"
    android:label="@string/app_name">

    <activity
        android:name="com.your.app.LogoActivity"
        android:logo="@drawable/your_logo"
        android:label="Logo Activity" >

    <activity
        android:name="com.your.app.IconActivity1"
        android:label="Icon Activity 1" >

    <activity
        android:name="com.your.app.IconActivity2"
        android:label="Icon Activity 2" >

</application>

이것이 다른 사람을 도울 수 있기를 바랍니다!


나는 안드로이드 2.3을 지원하고 싶기 때문에 AppCompat v7을 사용하고 있지만 방법이 작동하지 않습니다.
— liam xu

6

"extends AppCompatActivity"를 사용하고 작업 표시 줄을 표시하는 경우 시도하십시오.

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}

3

로고 만들기

" drawable-..." 폴더 에 모두 생성합니다 logo.png. 폴더 위치 : [YOUR APP]\app\src\main\res

AndroidManifest.xml에서 다음 행을 추가하십시오. android:logo="@drawable/logo"

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/logo"
    ...

그게 다야.


0

이것을 확인하고 싶을 수도 있습니다. 앱 아이콘에 필요한 모든 것을 얻었습니다.

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

최신 정보

기본적으로 런처 아이콘을 사용한다고 생각합니다. 가장 좋은 방법은 별도의 이미지를 만드는 것입니다. 확인 : http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems


링크를 보내 주셔서 감사합니다. 내 아이콘에서 문자를 제거하고 앱 전체에서 동일한 "로고"아이콘을 사용하게 될 수도 있지만 여전히 더 작은 버전을 사용해야하거나 약간 다른 버전을 사용해야 할 수도 있습니다. ActionBar, 그것이 제가 찾으려고하는 것입니다.
— Phil Ringsmuth 2011 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.