2014-12-16 1 views
0

Я использую панель инструментов из Appcompat с ActionMode. ActionMode накладывает панель инструментов. Теперь, если я нахожусь на пустое пространство в ActionMode, базовый ActionButton из панели инструментов обрабатывает ClickEvent.Ручки панели инструментов clickEvents пока накладываются ActionMode

Это нормальное поведение? Как я могу предотвратить это поведение?

((ActionBarActivity) getActivity()).getSupportActionBar().startActionMode(new ActionMode.Callback() { 
          @Override 
          public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { 
           actionMode.getMenuInflater().inflate(R.menu.actionmode, menu); 
           MenuItem menuItem = menu.findItem(R.id.number); 
           MenuItem menuItem1 = menu.findItem(R.id.action_edit); 
           TextView textView = (TextView) menuItem.getActionView(); 
           ImageButton imageButton = (ImageButton) menuItem1.getActionView(); 
           imageButton.setBackgroundResource(R.drawable.ic_action_edit); 
           textView.setText("0 selected"); 
           // Return true so that the action mode is shown 
           return true; 
          } 

          @Override 
          public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { 
           // As we do not need to modify the menu before displayed, we return false. 
           return false; 
          } 

          @Override 
          public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { 
           // Similar to menu handling in Activity.onOptionsItemSelected() 
           switch (menuItem.getItemId()) { 
            case R.id.action_delete: 
             // Some remove functionality 
             return true; 
           } 

           return true; 
          } 

          @Override 
          public void onDestroyActionMode(ActionMode actionMode) { 
           // Allows you to be notified when the action mode is dismissed 
          } 
         }); 

XML для моего ActionMode в/RES/значения/меню

<?xml version="1.0" encoding="utf-8"?> 
 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
 
    <item android:id="@+id/number" 
 
     android:title="number" 
 
     android:actionViewClass="android.widget.TextView"/> 
 
    <item android:id="@+id/action_edit" 
 
     android:title="edit" 
 
     android:actionViewClass="android.widget.ImageButton"/> 
 
    <item android:id="@+id/action_delete" 
 
     android:title="delete" 
 
     android:icon="@drawable/ic_action_delete"/> 
 
</menu>

ответ

0

Вам нужно будет установить раскладку режим действий, чтобы быть интерактивными.

Сначала установите пользовательские темы для всего приложения или одной деятельности в AndroidManifest файл:

<application android:theme="@style/Theme.CustomTheme"> 

В themes.xml файла ресурсов установить новый actionModeStyle для вашей темы:

<style name="Theme.CustomTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="actionModeStyle">@style/action_mode_style</item> 
</style> 

Тогда ваш action_mode_style должен иметь андроид: можно установить значение по умолчанию:

<style name="action_mode_style" parent="@style/Widget.AppCompat.ActionMode"> 
    <item name="android:clickable">true</item> 
</style>