2012-06-02 27 views
7

acabo de empezar a usar ActionBarSherlock para la construcción de alguna aplicación sencilla, en mi primera pantalla que tengo lista simple y añadí nuevo elemento de menú para añadir nuevo elemento a la lista:Edificio ActionMode con diseño personalizado en ActionBarSherlock

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

ahora cuando el usuario decide añadir un nuevo elemento que quiero empezar un nuevo modo de acción para añadir nuevo elemento, este modo de acción debe contener un diseño simple con la caja de texto y un botón, por lo que creó este diseño:

<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> 

así que ahora solo necesito ver t este diseño a la barra en el nuevo modo de acción:

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

y en mi acción:

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; 
    } 
} 

Así que, básicamente necesito algo entre ActionModes y CustomNavigation del ejemplo de Sherlock, pero el problema es que establece el diseño en la barra principal y no para la nueva barra que se abre para la acción.

¿Alguna sugerencia?

Respuesta

9

Probablemente desee utilizar el método en la clase ActionMode llamada "setCustomView".

así que algo como esto:

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