2013-09-06 22 views
8

Kullanıcının eylem çubuğu başlığına dokunarak uygulamasındaki gezinti çekmecesini açmasına/kapatmasına izin vermeye çalışıyorum (bu, geçerli Android Gmail uygulamasının nasıl oluşturulduğudur). Şu anda kullanıcı, çekmeceyi uygulama/çekmece simgesine dokunarak veya bir sol-sağ kaydırma ile kaydırarak çekebilir. Ancak, işlem çubuğu başlığının kendisi tıklanabilir değildir. developer docs'a göre, eylem çubuğu başlığının tıklatılması "android.R.id.home ürün kimliğine sahip bir MenuItem ile ana bilgisayar Etkinliği'ne onOptionsItemSelected ana bilgisayar dağıtımı göndermelidir", NAVIGATION_MODE_STANDARD kullandığımızda ancak bir şekilde bu şekilde davranması için başlığı alamıyorum.Gezinme Çekmecesini Eylem Çubuğu başlığıyla değiştirme

Ben Navigasyon Çekmece kendisi gayet inanıyorum ama Eylem Çubuğu kurmak nasıl burada: Herhangi bir öneri büyük takdir

private void configureActionBar(CharSequence mTitle) { 

    ActionBar actionBar = getActionBar(); 

    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setHomeButtonEnabled(true); 

    actionBar.setIcon(R.drawable.ic_blank); 

    GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, 
       new int[] { 
       0xFF004700, 0xFF002900 
       }); 

    gd.setCornerRadius(0f); 

    actionBar.setBackgroundDrawable(gd); 

    // set the title of the action bar using the given title 
    actionBar.setTitle(mTitle); 

} 

! Eğer İşlem Çubuğu simgesi/başlığı dokunarak açmak çekmeceyi istiyorsanız

cevap

23

, sana destek kütüphanede verilen ActionBarDrawerToggle sınıfını kullanmak önermek (android.support.v4.app.ActionBarDrawerToggle)

Referans: Kullanım https://developer.android.com/reference/android/support/v4/app/ActionBarDrawerToggle.html

Örnek:
https://developer.android.com/training/implementing-navigation/nav-drawer.html

hüner whe geliyor

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Pass the event to ActionBarDrawerToggle, if it returns 
    // true, then it has handled the app icon touch event 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle your other action bar items... 

    return super.onOptionsItemSelected(item); 
} 
+0

Gönderiniz için teşekkür ederiz - ben zaten olayları özetlediğiniz gibi mDrawerToggle'a aktarıyorum (bu yüzden uygulama simgesine dokunarak çekmeceyi beklendiği gibi değiştirebiliriz), ancak ActionBar'dan aynı işlevi almamda sorun yaşıyorum. başlığı (Gmail uygulamasında olduğu gibi simgeden ayrı). Başlık olarak bir TextView ile ActionBar için özel bir görünüm kullanmanın mümkün olabileceğini varsayalım, daha sonra görünüm için bir onClick dinleyicisi oluşturabilir ve openDrawer() öğesini çağırabilirdim, ancak bu umduğum çözümden daha az zarif görünüyor bulmak. Yine de teşekkürler! –

+0

Mmm garip çünkü geçerli uygulama im yapıyorsun title.in için de çalışır. Icon + title tek bir düğme gibi davranır çünkü her ikisi de tıkladığım her şeyi vurgular. Belki ActionBarDrawerToggle'ın ActionBar ile destek kütüphanesinden olmayan bir problemi vardır. ActionBar'ı destek kitaplığından kullanarak mı çalıştı? Eğer getActionBar() yerineSupportActionBar() almak zorundasınız ... Sadece – nsL

+0

Ah, iyi yakalamak. SupportActionBar'ı kullanmıyorum, bu yüzden denemeye karar vereceğim. Teşekkürler! –

0

Simge/Başlık uygulama tema niteliği de ayarlanırsa gösterilir: n olduğuna göre, onOptionsItemSelected() olay yakalama açılan/kapanan çekmece isteği işleyebilir böylece, ActionBarDrawerToggle onu geçmek böyle AndroidManifest.xml:

res/values ​​/ styles.xml Bu android.support.v7.app.ActionBarDrawerTo kullanarak çalışır tema beyanı

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 

tutan

<application 
    android:name=".SampleApp" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 
ggle, support.v4 sınıfı bu arada kullanımdan kaldırıldı. Bkz. How to use support-v7-appcompat library

İlgili konular