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.