如何在Android Studio中的活动中调用EditText OnSelectionChanged方法



如何在活动中使用OnSelectionChange。我创建了不同的类,扩展了EditText和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中调用此SelectionChanged函数。

尝试此

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

您可以设置自己的侦听器接口。

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

最新更新