2012-06-02 2 views
7

Je viens de commencer à l'aide ActionBarSherlock pour la construction d'une application simple, dans mon premier écran je liste simple et j'ai ajouté nouvel élément de menu pour ajouter nouvel élément à la liste:bâtiment ActionMode avec la mise en page personnalisée dans ActionBarSherlock

MenuItem newItem = menu.add("New"); 
newItem.setIcon(R.drawable.ic_compose_inverse) 
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

maintenant lorsque l'utilisateur choisir d'ajouter un nouvel élément que je veux commencer un nouveau mode d'action pour l'ajout de nouvel élément, ce mode d'action devrait comporter une mise en page simple avec zone de texte et un bouton, je créé cette mise en page:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

     <EditText 
      android:id="@+id/text" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:inputType="text" > 
     </EditText> 
     <Button 
      android:id="@+id/addBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/add" /> 
</LinearLayout> 

alors maintenant j'ai juste besoin de se t cette disposition à la barre dans le nouveau mode d'action:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem item) { 
       actionMode = startActionMode(new MyAction(ListEditor.this)); 
       return true; 
      } 
     }); 

et dans mon action:

private final class MyAction implements ActionMode.Callback { 
    ... 
    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     View customNav = LayoutInflater.from(context).inflate(R.layout.add_item, null); 
     getSupportActionBar().setCustomView(customNav); 
     getSupportActionBar().setDisplayShowCustomEnabled(true); 
     return true; 
    } 
} 

Donc, fondamentalement, je besoin de quelque chose entre ActionModes et CustomNavigation de l'exemple de sherlock, mais le problème est qu'il définit la mise en page à la barre principale et non pour la nouvelle barre qui ouvre pour l'action.

des suggestions?

Répondre

9

Vous souhaitez probablement utiliser la méthode dans la classe ActionMode appelée "setCustomView".

donc quelque chose comme ceci:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      actionMode = startActionMode(new MyAction(ListEditor.this)); 
      actionMode.setCustomView(customNav); 
      return true; 
     } 
    }); 
Questions connexes