뒤로가 아닌 툴바의 재질 "닫기"버튼


답변:


108

사용하다  

this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);

 

이것을 달성하기 위해.

나만의 닫기 아이콘을 만들거나 GitHub에 설정된 머티리얼 디자인 아이콘 에서 가져올 수 있습니다. 또한이 줄을 위쪽 줄 앞에 추가하여 닫기 기능을 뒤로 화살표로 만듭니다.

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

작동하지 않습니다. 뒤로 화살표를 새 아이콘으로 바꾸지 않고 둘 다 나타납니다. 또한이 솔루션에서는 아이콘이 "colorPrimaryDark"속성을 얻지 못합니다.
Marta Rodriguez

작동하지만 정확히 내가 원하는 것은 아닙니다. 나는 "colorPrimaryDark"와 함께 뒤로 아이콘처럼 작동 할 것으로 예상했다. 그러나 "닫기"아이콘은 SDK의 일부가 아닌 것 같습니다. @AlokNair 감사합니다!
Marta Rodriguez

1
ActionBarActivity를 사용할 때 잘 작동하고 매니페스트에 PARENT가 지정되어 있습니다. 답변에 +1. 고마워 친구!
PsyGik

7
SetHomeAsUpIndicator 전에 setDisplayHomeAsUpEnabled를 호출해야한다는 것을 알았습니다. 그렇지 않으면 아이콘이 대체되지 않습니다.
CodeChimp

1
원본으로 다시 변경하는 방법은 무엇입니까?
Michel Feinstein 2018 년

22

물론 지원 앱 바를 사용하는 경우 매니페스트에서 부모를 정의한 다음 onSupportNavigationUp () 을 재정의 해야합니다. 또한 아이콘 팩에 대한 편리한 사이트 ( https://www.google.com/design/icons/)로 이동하십시오.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.yourAwesomeLayout);

    setupToolBar();    
}

private void setupToolBar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    if (toolbar == null) return;

    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}

@Override
public boolean onSupportNavigateUp() {
    finish(); // close this activity as oppose to navigating up

    return false;
}

여기에 이미지 설명 입력


3
당신이 거짓을 반환 한 이유는 onSupportNavigateUp()무엇입니까? 문서는 단지 성공 플래그를 말합니다
brainmurphy1

7

늦은 답변 죄송합니다. 나는 당신을위한 가장 쉬운 해결책을 찾았습니다 . 위의 모든 대답은 나를 위해 작동하지 않습니다 ( because i want to use toolbar not actionBar due to theming). 그래서 xml 레이아웃을 통해 닫기 버튼을 추가해보세요. 그리고 그것은 작동합니다.

다음은 toolbar (v7)에 닫기 버튼을 추가하는 xml 구문입니다.

app:navigationIcon="@drawable/ic_close_black_24dp"

여기 ans는 출력 이미지입니다 출력 이미지


어디 @drawable/ic_close_black_24dp에서 왔습니까?
CACuzcatlan

@CACuzcatlan 드로어 블 폴더에있는 임의의 이미지입니다. 어떤 아이콘이든 선택할 수 있습니다.
Mikkel Larsen

@CACuzcatlan은 Android Studio 벡터 자산에서 찾을 수 있습니다.
Sourav Bagchi

5
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);

3

매니페스트에서 부모 활동을 정의하는 대안은 다음 예와 같이 onOptionsItemSelected 메서드에서 수행 할 작업을 처리하는 것입니다.

 @Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home/back button
        case android.R.id.home:
            finish();
            break;
    }
    return super.onOptionsItemSelected(item);
}

-5

스타일을 정의 할 수 있습니다.

<style name="Theme.Toolbar.Clear">
    <item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
</style>

테마에서 사용하십시오.

<style name="Theme.Clear">
    <item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
</style>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.