如何在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函数。
答案 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);
}