Araç Çubuğunda Geri yerine malzeme "kapat" düğmesi


82

Google'ın Inbox Uygulamasında yeni bir e-posta oluşturduğunu gördüm, araç çubuğunda geri düğmesi (bir ok) yerine bir "kapat" düğmesi var (resme bakın).

Bunu nasıl başarabilirim?

gelen kutusu oluştur kapat düğmesi

Yanıtlar:


108

Kullanım  

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

 

Bunu başarmak için.

Kendi yakın simgenizi oluşturabilir veya GitHub'da ayarlanan materyal tasarım simgesinden alabilirsiniz . Ayrıca, geri oku olarak kapatma işlevi yapmak için bu satırı yukarıdaki satırın önüne ekleyin.

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Çalışmıyor. Geri okunu yeni simgeyle değiştirmez, ikisi de görünür. Ayrıca, bu çözümle simge "colorPrimaryDark" özelliğini almaz.
Marta Rodriguez

Çalışıyor ama tam olarak istediğim şey değil. "ColorPrimaryDark" ile arka simgesinin yaptığı gibi çalışmayı bekliyordum. Ancak "kapat" simgesi SDK'nın bir parçası değil gibi görünüyor. Teşekkürler @ AlokNair!
Marta Rodriguez

1
ActionBarActivity kullanılırken iyi çalışır ve manifest'te PARENT belirtilir. Cevap için +1. Teşekkürler dostum!
PsyGik

7
SetHomeAsUpIndicator'dan önce setDisplayHomeAsUpEnabled'ı çağırmam gerektiğini buldum, aksi takdirde simge değiştirilemezdi.
CodeChimp

1
ve orijinal haline nasıl geri dönülür?
Michel Feinstein

22

Manifest'te bir üst öğe tanımlamanız ve ardından tabii ki destek uygulama çubuğunu kullanıyorsanız onSupportNavigationUp () öğesini geçersiz kılmanız gerekir . Ayrıca simge paketleri için şu kullanışlı siteye gidin: 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;
}

görüntü açıklamasını buraya girin


3
herhangi bir nedenle yanlış çıktı onSupportNavigateUp()mı? Belgeler bunun sadece bir başarı bayrağı olduğunu söylüyor
brainmurphy1

7

geç yanıt için üzgünüm. sizin için en kolay çözümü buldum . burada her şeyden önce cevap benim için çalışmıyor ( because i want to use toolbar not actionBar due to theming) bu yüzden xml düzeni aracılığıyla kapat düğmesi eklemeyi deneyin. ve çalışıyor.

Burada araç çubuğuna (v7) kapat düğmesi eklemek için bir xml sözdizimi verilmiştir.

app:navigationIcon="@drawable/ic_close_black_24dp"

ans burada bir çıkış resmi çıktı görüntüsü


Nereden @drawable/ic_close_black_24dpgeliyor?
CACuzcatlan

@CACuzcatlan Bu, çekilebilir klasöründe sahip olduğu rastgele bir görüntü. Hangi simgeyi seçebilirsiniz.
Mikkel Larsen

@CACuzcatlan bunu Android Studio vektör varlıklarında bulabilirsiniz.
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

Manifest'teki ana etkinliği tanımlamanın bir alternatifi, bu örnekte olduğu gibi onOptionsItemSelected yönteminde hangi eylemin gerçekleştirileceğini işlemektir:

 @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

Bir stil tanımlayabilirsiniz:

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

ve bunu temanızda kullanın:

<style name="Theme.Clear">
    <item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
</style>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.