如何在Android Studio中的Activity中调用EditText onSelectionChanged方法

时间:2019-05-09 09:15:33

标签: android

如何在Activity中使用onSelectionChanged。我创建了不同的类来扩展EditText并覆盖onSelectionChanged。它在那里工作,但我想在活动中使用此onSelectionChanged方法

public EditTextCursorWatcher(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);

}

public EditTextCursorWatcher(Context context, AttributeSet attrs) {
    super(context, attrs);

}

public EditTextCursorWatcher(Context context) {
    super(context);

}


 @Override   
 protected void onSelectionChanged(int selStart, int selEnd) { 
    Toast.makeText(getContext(), "selStart is " + selStart + "selEnd is " + selEnd, Toast.LENGTH_LONG).show();
     }

第二步:引用布局文件中的类(例如main.xml(尽管我是自定义对话框布局))。不要忘记使用完整的程序包名称(在本例中为com.example.EditTextCursorWatcher,例如

<com.example.EditTextCursorWatcher
 android:id="@+id/etEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:minLines="5"
android:inputType="textMultiLine"/> 

我想在MainActivity中调用此onSelectionChanged函数。

2 个答案:

答案 0 :(得分:0)

尝试一下

etEdit.setAccessibilityDelegate(object : View.AccessibilityDelegate() {
        override fun sendAccessibilityEvent(host: View?, eventType: Int) {
            super.sendAccessibilityEvent(host, eventType)
            if (eventType == AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED{
                 //TODO
            }
        }
    })

答案 1 :(得分:0)

您可以设置自己的侦听器界面。

  @Override
protected void onSelectionChanged(int selStart, int selEnd){

    for(ISelectionChangedListener listener : selectionChangedListeners){
        listener.selectionChanged("...");
    }
    super.onSelectionChanged(selStart, selEnd);
}


private ArrayList<ISelectionChangedListener> selectionChangedListeners = new ArrayList<>();

public void addOnSelectionChangedListener(ISelectionChangedListener listener){
    selectionChangedListeners.add(listener);
}

public interface ISelectionChangedListener{
    void selectionChanged(String newSelection);
}