Intereting Posts
Как заблокирована ориентация приложения (пейзаж или портрет)? Существуют ли альтернативы облачным сообщениям Google для пользовательских сборок Android? Есть ли способ установить Android .img для доступа к содержимому AVD (Android Virtual Device)? Установка Android sdk. Ошибка: был найден недопустимый контент, начиная с элемента 'd: skin'. На данный момент не ожидается никакого дочернего элемента Android: ScrollView и кэш чертежей? Получение размера ems в строке в Android Как связаться с сервером Node.js от клиента Android Android: изменение ресурсов строк программно Android-фрагменты против составных элементов управления После обновления библиотеки поддержки Android RelativeLayout изменяет высоту программно Как выполнить подтверждение (да / нет) DialogPreference? Android: Как освободить ресурсы, когда приложение завершается? Студия Android не может найти указанный файл Как установить стиль для кнопки в Android?

Андроидная паста

Есть ли способ поймать событие paste в моем приложении? Я должен что-то сделать, когда я долго нажимаю на editText и выбираю Paste из контекстного меню. благодаря

Solutions Collecting From Web of "Андроидная паста"

Создайте menu.xml с позицией 'paste'

Зарегистрируйте контекстMenu в своем EditText

EditText et=(EditText)findViewById(R.id.et); registerForContextMenu(et); 

Создать контекстMenu

 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; menu.setHeaderTitle("title"); } 

Создать меню метода onClick

 @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); switch (item.getItemId()) { case R.id.paste: break; } return true; } 

Вы должны реализовать прослушиватель TextWatcher на элементе управления, который получает действие вставки.

Класс TextWatcher предоставляет методы обработки OnChange, BeforeChange и AfterChange любого Редактируемого. Например:

 private void pasteEventHandler() { ((EditText)findViewById(R.id.txtOutput)) .addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { Log.d(TAG, "Text changed, refreshing view."); refreshView(); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { } }); } 

Ниже приведен код, в котором вы можете переопределить копию панели действий / Вставить и т. Д.

 public class MainActivity extends Activity { EditText editText; private ClipboardManager myClipboard; private ClipData myClip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); editText = (EditText) findViewById(R.id.editText3); myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); editText = (EditText) findViewById(R.id.editText3); editText.setCustomSelectionActionModeCallback(new Callback() { @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { // TODO Auto-generated method stub return false; } @Override public void onDestroyActionMode(ActionMode mode) { // TODO Auto-generated method stub } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { // TODO Auto-generated method stub return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) { case android.R.id.copy: int min = 0; int max = editText.getText().length(); if (editText.isFocused()) { final int selStart = editText.getSelectionStart(); final int selEnd = editText.getSelectionEnd(); min = Math.max(0, Math.min(selStart, selEnd)); max = Math.max(0, Math.max(selStart, selEnd)); } // Perform your definition lookup with the selected text final CharSequence selectedText = editText.getText() .subSequence(min, max); String text = selectedText.toString(); myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip); Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show(); // Finish and close the ActionMode mode.finish(); return true; case android.R.id.cut: // add your custom code to get cut functionality according // to your requirement return true; case android.R.id.paste: // add your custom code to get paste functionality according // to your requirement return true; default: break; } return false; } }); } } 

Вы можете установить класс прослушивателя:

 public interface GoEditTextListener { void onUpdate(); 

}

Создать собственный класс для EditText:

 public class GoEditText extends EditText { ArrayList<GoEditTextListener> listeners; public GoEditText(Context context) { super(context); listeners = new ArrayList<>(); } public GoEditText(Context context, AttributeSet attrs) { super(context, attrs); listeners = new ArrayList<>(); } public GoEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); listeners = new ArrayList<>(); } public void addListener(GoEditTextListener listener) { try { listeners.add(listener); } catch (NullPointerException e) { e.printStackTrace(); } } /** * Here you can catch paste, copy and cut events */ @Override public boolean onTextContextMenuItem(int id) { boolean consumed = super.onTextContextMenuItem(id); switch (id){ case android.R.id.cut: onTextCut(); break; case android.R.id.paste: onTextPaste(); break; case android.R.id.copy: onTextCopy(); } return consumed; } public void onTextCut(){ } public void onTextCopy(){ } /** * adding listener for Paste for example */ public void onTextPaste(){ for (GoEditTextListener listener : listeners) { listener.onUpdate(); } } } 

XML:

 <com.yourname.project.GoEditText android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/editText1"/> 

И в вашей деятельности:

 private GoEditText editText1; editText1 = (GoEditText) findViewById(R.id.editText1); editText1.addListener(new GoEditTextListener() { @Override public void onUpdate() { //here do what you want when text Pasted } });