ActionBar에서 뒤로 버튼을 사용자 정의하는 방법


188

다음의 제안을 사용하여 작업 표시 줄의 배경, 로고 이미지 및 텍스트 색상을 사용자 정의 할 수있었습니다.
Android : ActionBar "홈"아이콘을 앱 아이콘 이외의 것으로 변경하는 방법은 무엇입니까?
ActionBar 텍스트 색상
ActionBar 배경 이미지

마지막으로 사용자 정의하려는 것은 뒤로 버튼 이미지입니다. 기본적으로 회색이며 흰색으로 표시하고 싶습니다. 색상을 변경하거나 드로어 블을 지정하거나 단순히 투명하게 만들고 사용자 정의 로고 이미지에 쉐브론을 추가하면 효과가 있습니다. 어떻게하면 되나요?


1
작업 표시 줄에 뒤로 버튼이 없습니다. BACK 버튼은 시스템 표시 줄에 있거나 화면에 없습니다 (화면 외부 BACK 버튼이있는 장치의 경우).
CommonsWare

1
@CommonsWare, 액션 바에서 '왼쪽 쉐브론'이 무엇인지 확실하지 않지만 뒤로 버튼이라고합니다. 앞으로 안드로이드 기기에서 실제 뒤로 버튼을 대체 할 것으로 예상됩니다.
Sunil Gowda 2012

13
아냐 아냐 "위"표시기입니다 (화살표 방향에도 불구하고). setDisplayHomeAsUpEnabled()on 을 통해 활성화합니다 ActionBar. 구체적 으로 단순히 "돌아 오는" 것은 아닙니다 . 즉, 앱 아이콘을 누르면 시스템 표시 줄의 BACK 버튼과 마찬가지로 이전 활동으로 돌아 가지 않고 계층 구조로 올라갑니다.
CommonsWare 2012

2
"물리적 뒤로 버튼이없는 새로운 장치는 모두 '소프트'뒤로 버튼을 표시합니까?"모두 시스템 표시 줄에 뒤로 버튼이 있어야합니다.
CommonsWare

3
단지 많은 경우에서 UP 버튼을 추가 할 것입니다 단순히 돌아갑니다. "이전에 본 화면이 현재 화면의 계층 적 부모이기도 한 경우 Back 키를 누르면 Up 버튼을 누르는 것과 같은 결과가 나타납니다. 이는 일반적인 현상입니다."from developer.android.com/design/patterns /navigation.html
Dori

답변:


390

"업"능력 표시기는 homeAsUpIndicator테마 의 속성에 지정된 드로어 블에 의해 제공됩니다 . 사용자 정의 버전으로 재정의하려면 다음과 같습니다.

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
</style>

응용 프로그램에서 3.0 이전 버전을 지원하는 경우이 버전의 사용자 정의 테마를 values-v11유사하게 넣으십시오 .


10
나에게도 효과가 있습니다. github의 AOSP에서와 같이 ActionBarStyle로 설정된 스타일 내부를 선언했지만 작동하지 않았습니다. 주제 테마로 이동하면 트릭이되었습니다! +1
Dori

37
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>나를 위해 일 <item name="homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>하지 않았다. 안드로이드 버전 인 것 같아요
Michał K

6
이것에 대한 상단 및 하단 패딩을 0dp로 설정하는 방법이 있습니까?
James McCracken

3
@JamesMcCracken이 작업을 수행 할 수있는 유일한 방법은 사용자 정의 레이아웃을 통한 것입니다.
greg7gkb 2018 년

4
누구든지이 일을 Navigation Drawer했습니까? 나는 ActionBarDrawerToggle업 인디케이터를 자신의 것으로 교체한다고 생각한다. 따라서 스타일을 설정해도 아무런 효과가 없다.
Lucas Jota

89

따라서 Android API 레벨 18 이상에 추가 된 homeAsUpIndicator () 함수를 사용하여 프로그래밍 방식으로 쉽게 변경할 수 있습니다.

ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

지원 라이브러리를 사용하는 경우

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);


5
서랍을 사용 drawerToggle.setDrawerIndicatorEnabled(false);하는 경우 인디케이터를 변경하기 전에 전화해야합니다
Floss

2
@Floss 감사합니다. setDrawerIndicatorEnabled (false / true); 내 요구 사항에 따라 홈 버튼을 일관된 '뒤로'와 (열기 서랍 / 서랍 닫기)로 설정하는 문제가 해결되었습니다.
Ashraf Alshahawy

1
@Floss drawerToggle.setDrawerIndicatorEnabled (false); 그것은 나를 위해 작동합니다 :)
Context

30

질문을 확인했습니다. 내가 따르는 단계는 다음과 같습니다. 소스 코드는 GitHub에서 호스팅됩니다 : https://github.com/jiahaoliuliu/sherlockActionBarLab

v11 이전 장치의 실제 스타일을 재정의하십시오.

다음 코드를 복사하여 기본값 폴더의 styles.xml 파일에 붙여 넣습니다.

<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

부모는 Sherlock 테마로 변경할 수 있습니다.

v11 + 디바이스의 실제 스타일을 대체하십시오.

폴더 값이있는 동일한 폴더에서 values-v11이라는 새 폴더를 만듭니다. Android는 API 이상의 장치를 위해이 폴더의 내용을 자동으로 찾습니다.

styles.xml이라는 새 파일을 만들고 다음 코드를 파일에 붙여 넣습니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="android:homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

스타일 이름은 기본값 폴더의 파일과 동일해야하며 homeAsUpIndicator 항목 대신 android : homeAsUpIndicator입니다.

항목 문제는 API 11 이상이 설치된 기기의 경우 Sherlock Action Bar는 Android와 함께 제공되는 기본 Action Bar를 사용하므로 키 이름은 android : homeAsUpIndicator입니다. 그러나 API 10 이하의 디바이스의 경우 Sherlock Action Bar는 자체 ActionBar를 사용합니다.이 ActionBar는 홈 표시기를 간단한 "homeAsUpIndicator"라고합니다.

매니페스트에서 새로운 테마 사용

AndroidManifest 파일에서 애플리케이션 / 활동에 대한 테마를 바꾸십시오.

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyCustomTheme" >

2
그리고 이미 사용 가능한 홀로 아이콘을 찾고 있다면 @ drawable / abc_ic_ab_back_holo_light 또는 @ drawable / abc_ic_ab_back_holo_dark를 시도 할 수 있습니다.
메이슨 리

25

탐색 모음 아이콘을 변경하면 ActionBar 및 Toolbar가 다릅니다.

ActionBar 대체 homeAsUpIndicator속성의 경우 :

<style name="CustomThemeActionBar" parent="android:Theme.Holo">
    <item name="homeAsUpIndicator">@drawable/ic_nav_back</item>
</style>

툴바 재정의 navigationIcon속성의 경우 :

<style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="navigationIcon">@drawable/ic_nav_back</item>
</style>

19

아래 코드 onCreate()를 수행하고 나와 함께 일했습니다.

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

5

툴바를 사용하는 경우 해당 솔루션이 필요하지 않습니다. 툴바의 테마 만 변경하면됩니다

app:theme="@style/ThemeOverlay.AppCompat.Light"

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

dark.actionBar를 사용하는 경우 뒤로 버튼은 흰색이되고 그렇지 않은 경우 가벼운 작업 표시 줄 테마를 사용하면 검은 색이됩니다.


귀하의 코드는 저에게 효과적이지만 해당 표시기의 색상을 변경할 수 있습니까?
Steve Luck

2
colorControlNormal 및 android : textColorSecondary 값이 그 원인이지만이 값들도 어떤 변화가 있는지 잘 모르겠습니다. 툴바 테마에서이 값을 정의하여 시도해 볼 수 있습니다.
오구 즈 오즈 칸

"app : theme ="@ style / ThemeOverlay.AppCompat.Light ""를 사용하여 navigationIcon을 배경 흰색으로 표시하고 있지만 기본 회색 아이콘을 표시하고 있습니다. 파란색으로 변경해야합니다. "colorControlNormal 및 android : textColorSecondary"가 작동하지 않습니다.
Steve Luck

2
"ThemeOverlay.AppCompat.Light"가 부모 인 사용자 정의 테마를 사용하십시오. 이 작동 할 수 있습니다.
오구 즈 오즈 칸

1
name = "android : colorControlNormal"이 아닌 name = "colorControlNormal"을 사용하여 탐색 아이콘을 변경하는 솔루션을 찾았습니다. 하지만 다른 드로어 블로 바꾸고 싶습니까?
Steve Luck

2

이것을 트레이 :

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);

내부 onCreate();


작동하지만 이전 뒤로 버튼으로 돌아가는 방법
Nadimuddin

0

프로젝트 menifest.xml 파일에서 back.png 이미지를 사용했습니다. 프로젝트에서 잘 작동합니다.

<activity
        android:name=".YourActivity"
         android:icon="@drawable/back"
        android:label="@string/app_name" >
    </activity>

0

Gradle Resource 디렉토리 아이콘에서 아이콘을 잘못 관리했기 때문에 Action-bar Home 버튼 아이콘 방향과 동일한 문제가 발생했습니다.

아랍어 Gradle 리소스 디렉토리에서 x-hdpi에 아이콘을 배치하고 영어 Gradle 리소스에 xx-hdpi와 같은 다른 밀도 폴더에 넣은 동일한 아이콘 이름과 같이 APK에서는 다른 디렉토리에 두 개의 동일한 아이콘 이름이 있으므로 장치 밀도 의존 아이콘을 선택합니다. RTL 또는 LTR 일 수 있습니다.

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