2013-08-03 23 views
1

我为ActionMode写了一个自定义菜单,并在文本选择过程中将它作为自定义ActionMode传递给TextView.setCustomSelectionActionModeCallback(ActionMode)。它的工作原理,但当我点击与SubMenu项目,它显示他们只是一秒,然后ActionMode关闭,不要让我选择一个子菜单项。当我使用MenuItem.SHOW_AS_ACTION_IF_ROOM作为我的记录时,它也会发生在我使用“溢出”项目时。 任何想法? 我使用的是Android ICSTextView ActionMode无法正确显示子菜单

+0

你是否设法解决这个问题? –

+0

恐怕不是... –

回答

1

我发现操作模式被关闭/结束时EditText失去了重心:

TextView.java

@Override 
public void onWindowFocusChanged(boolean hasWindowFocus) { 
    super.onWindowFocusChanged(hasWindowFocus); 

    if (mEditor != null) mEditor.onWindowFocusChanged(hasWindowFocus); 

    startStopMarquee(hasWindowFocus); 
} 

注:EditTextTextView子类。

Editor.java

void onWindowFocusChanged(boolean hasWindowFocus) { 
    if (hasWindowFocus) { 
     ... 
    } else { 
     ... 
     hideControllers(); 
     ... 
    } 
} 

解决方案

我试图创建这样的:

package com.edwardsp.sample.view; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.EditText; 

public class CustomEditText extends EditText { 

    public CustomEditText(Context context) { 
     super(context); 
    } 

    public CustomEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 

    @Override 
    public void onWindowFocusChanged(boolean hasWindowFocus) { 
     if (hasWindowFocus) { 
      super.onWindowFocusChanged(hasWindowFocus); 
     } 
    } 
} 

,并使用CustomEditText正常EditText。可以显示动作模式子菜单。我在CustomEditText中没有发现奇怪的行为。如果有人从这个实现中发现奇怪的行为,请告诉我。