2012-06-02 7 views
7

Właśnie rozpoczęciem korzystania ActionBarSherlock na budowę jakąś prostą aplikację, w moim pierwszym ekranie mam prostą listę i dodałam nowy element menu do dodawania nowego elementu do listy:budynku ActionMode z niestandardowy układ w ActionBarSherlock

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

teraz kiedy użytkownik wybrać, aby dodać nowy element, chcę zacząć nowy tryb działania dodawania nowego elementu, ten tryb działania powinien zawierać prosty układ z pola tekstowego i przycisk, więc stworzyłem ten układ:

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

, więc teraz potrzebuję se t ten układ do baru w nowym trybie działanie:

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

iw moim działania:

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

Więc w zasadzie muszę coś między ActionModes i CustomNavigation z przykładu Sherlock, ale problem jest że ustawia układ na pasku głównym, a nie na nowy pasek, który otwiera się dla działania.

jakieś sugestie?

Odpowiedz

9

Prawdopodobnie chcesz użyć tej metody w klasie ActionMode o nazwie "setCustomView".

więc coś takiego:

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