How to set up a listener on the selected text in TextView

I am using ActionMode.Callback but I need to know when the text has finished being selected... for example

在这里输入图像描述


I think you can find your answer here:

Android Text Selection Listener

The key term you're looking for here, to help you with your research, is ActionMode , provided that your target is honeycomb or newer.

The API docs (scroll down to "using the contextual action mode) do an ok job of explaining things, once you find what you're looking for, which is the biggest barrier to their use, but basically what you're going to need to do is this:

  • set your EditText to be selectable ( android:textIsSelectable="true" or setTextIsSelectable(true);
  • Implement the ActionMode.Callback interface and provide your own menu items.
  • NOTE: as mentioned above, this only works for API level 11+. If you're targeting earlier platforms, getting the events for text selection is much more complicated.


    in .xml:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true" />
    

    in .class:

    textview.setCustomSelectionActionModeCallback(new callback(textview));
    ...
    public class callback implements Callback {
    
        private TextView mTextView;
    
        public callback(TextView text) {
            this.mTextView = text;
    
        }
    
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            int start = mTextView.getSelectionStart();
            int end = mTextView.getSelectionEnd();
            Spannable wordtoSpan = (Spannable) mTextView.getText();
    
            switch (item.getItemId()) {
    
            case R.id.item_blue:
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.BLUE), start
                        , end,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            singlenton.getInstance().getDatabase().createMarkText(mTextView,Color.BLUE);
                return true;
    
            case R.id.item_green:
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.GREEN), start, end,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                singlenton.getInstance().getDatabase().createMarkText(mTextView,Color.GREEN);
                return true;
    
            case R.id.item_red:
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.RED), start, end,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                singlenton.getInstance().getDatabase().createMarkText(mTextView,Color.RED);
                return true;
            case R.id.item_yellow:
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.YELLOW), start, end,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                singlenton.getInstance().getDatabase().createMarkText(mTextView,Color.YELLOW);
                return true;
            case R.id.item_erase:
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.TRANSPARENT), start, end,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                singlenton.getInstance().getDatabase().createMarkText(mTextView,Color.TRANSPARENT);
                return true;
            }
            return false;
        }
    
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.setTitle("Selecione a cor");
            mode.getMenuInflater().inflate(R.menu.menu_text_context, menu);
    
            return true;
        }
    
        @Override
        public void onDestroyActionMode(ActionMode mode) {
    
        }
    
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            menu.removeItem(android.R.id.selectAll);
            // Remove the "cut" option
            menu.removeItem(android.R.id.cut);
            // Remove the "copy all" option
            menu.removeItem(android.R.id.copy);
            return true;
        }
    
    }
    
    链接地址: http://www.djcxy.com/p/11842.html

    上一篇: Logcat错误

    下一篇: 如何在TextView中的选定文本上设置侦听器