2013-02-14 12 views
13

tıklayın. Simgelerimi oluşturmak için hareket çubuğuna gittim. Bununla birlikte, menü öğelerinden biri tıklandığında özel bir görünüm açmam gerekiyor.Android İşlem çubuğu özel öğe üzerinde açılan görünüm Ben tabletler için bir Android uygulaması yazıyorum

Özel bir işlem çubuğu istemiyorum - "Konuları Tara" eylem çubuğu öğesine tıklandığında özel görünümü şişirmem gerekiyor. Bu görüş bir açılan gibi görünür gerekir ancak navigasyon için kullanılmayacak şekilde kendi özel düzen kullanıyor. İşte

Drop down menu

benim menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_browse" 
     android:title="Browse Subjects" 
     android:showAsAction="always" 
     android:actionLayout="@layout/action_layout_browse" 
     android:actionProviderClass="au.com.pearson.f12catalogue.action_providers.BrowseProvider" 
      /> 
    <item android:id="@+id/menu_settings" 
     android:title="Settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" /> 
</menu> 

ben işlem çubuğu öğesi tıklandığında ActionProviderClass beni özel bir görünüm örneğini sağlayacak varsayılır ama bir çıkış yolu çalışamaz olduğunu - belki yanlış yoldan aşağı iniyorum.

Bu herhangi bir Yardım FAZLA takdir olurdu! Teşekkürler!

GÜNCELLEME: Hareket çubuğu stiline yönelik bağlantılar için teşekkürler, ancak yalnızca bir açılır menü oluşturmak istemiyorum. Özel bir görünümü şişirmek istiyorum. Görünüm, DB sorgularını vb. Gerçekleştirecektir.

+1

i buraya görüntü olarak gönderdiniz bir numune için arıyorum için

, bana herhangi bir örnek örnek teşkil veya özel açılan oluşturmak ve dinamik orada menü öğelerini nasıl ekleneceğini ima lütfen edebilirsiniz. – Naruto

+1

UI iyi görünüyor. Uygulamayı tamamladın mı? indirmek için mi? – Zen

cevap

11

Tamam ben bir çözüm kendim çalıştım. Temelde actionProviderClass İşlem Çubuğu bir actionView örneğini için kullanılır. Bu sınıfta, şişirdiğiniz görünüme bir onClick dinleyicisi ekleyebilirsiniz. Ben tıklandığında ana çerçeve içinde bir açılan görünümü şişirmek için bu dinleyici kullanılır. Örneğin

public class BaseProvider extends ActionProvider { 

    protected final Context context; 
    protected final int layout; 
    protected final BaseProvider self; 
    protected View view; 
    protected int positionLeft = 0; 
    protected Dropdown dropdown; 

    public BaseProvider(Context context, int layout, Dropdown dropdown) { 
     super(context); 
     this.layout = layout; 
     this.context = context; 
     this.self = this; 
     this.dropdown = dropdown; 
    } 

    @Override 
    public View onCreateActionView() { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View view = inflater.inflate(this.layout, null); 

     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       self.onItemClick(); 
      } 
     }); 
     this.view = view; 
     return view; 
    } 

    public boolean onItemClick(){ 
     toggleDropdown(); 
     return true; 
    } 

    protected void toggleDropdown(){ 
     this.positionLeft = getRelativeLeft(view); 
     DropdownInflater.getInstance().toggleDropdown(this.dropdown,this.positionLeft); 
    } 

    protected int getRelativeLeft(View view) { 
     int[] loc = new int[2]; 
     view.getLocationOnScreen(loc); 
     return loc[0]; 
    } 
} 
+10

Eğer Dropdown sınıfını nasıl yaptığınızı bilgi verebilirseniz harika olurdu. Bazı diğer Widget dayanır mı yoksa bir şekilde bir ListView mi? – jelgh

+0

ActionProvider'daki öğeler için onClick dinleyicilerini nasıl ve nereye eklediniz? – lschlessinger

İlgili konular