2012-10-05 14 views

cevap

39

Bir yorumda belirttiğim gibi, bunlardan herhangi birinin ABS ile değişip değişmeyeceğinden tam olarak emin değilim (emin değilim çok fazla), ancak standart Action Çubuğu ile sizin için özel bir düzen .xml yükleyebilirsiniz. eylem çubuğu başlığı.

private void setupActionBar() { 
     ActionBar ab = getActionBar(); 
     ab.setDisplayShowCustomEnabled(true); 
     ab.setDisplayShowTitleEnabled(false); 
     ab.setIcon(R.drawable.your_left_action_icon); 
     LayoutInflater inflator = (LayoutInflater) this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = inflator.inflate(R.layout.action_bar_title, null); 

     TextView titleTV = (TextView) v.findViewById(R.id.title); 
     Typeface font = Typeface.createFromAsset(getAssets(), 
       "fonts/your_custom_font.ttf"); 
     titleTV.setTypeface(font); 

     ab.setCustomView(v); 

      ab.setHomeAsUpEnabled(true); 
    } 

solun kontrol altına almak için:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/your_desired_background" > 

<TextView 
     android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:maxLines="1" 
      android:ellipsize="end" 
      android:text="@string/app_name" 
      android:textAppearance="?android:attr/textAppearanceMedium"/> 

</RelativeLayout> 

Ardından Faaliyetinizdeki, sen onCreate() böyle bir yöntemi çağırmak isterim: Örneğin, action_bar_title.xml olabilir tabii ki

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.yourRightActionItem: 
         //do something 
         return true; 
     case android.R.id.home: //<-- this will be your left action item 
      // do something 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

ayrıca menü xml en yanı Eylem öğeleri için gerekli diğer kurulumları yaptığınızdan emin olun: eylem öğesi, sen Faaliyetinizdeki bu yapabilirdi. Bu, herhangi bir sağ taraflı eylem öğeleri için olacaktır.

Düzenleme: Başka bir yorumda gördüğünüzde, başlığın bir resim olacağını söylediniz. Bu durumda, örneğimde kullandığım TextView'u ImageView'ınızla değiştirin ve setupActionBar() yöntemindeki font özelleştirme kodunu dikkate almayın.

Edit2: Java kodumu güncelledim. Ab.setHomeAsUpEnabled öğesini (true) yapmanız ve daha sonra görünmez (veya Android'in bunu kabul edip etmeyeceğini bilmeme rağmen belki de null) uygulamak için özel bir temanın olması gerekir. Buraya bakın (böylece soldaki eylem öğesine çözüm Ben ilk yorumunda yazdığı gibi doğru, düğme YUKARI kullanarak sahte olacaktır cevap here :)

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo"> 
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item> 
    <!-- or you could try @null --> 
</style> 
+0

alınan? – urSus

+0

Evet, ve android için özel bir stil eklemek istersiniz: homeAsUpIndicator bu yüzden soldaki chevron göstergesini alamazsınız. Daha fazla kod ile güncelleyeceğim. – dennisdrew

+0

Android olmadan oku nasıl gizleyebilirim: homeAsUpIndicator? API seviye 11 ve minimum 8 –