2015-06-18 1 views
0

В моем фрагменте я использовал один макет. В этом случае для одного текстового представления мне нужно предоставить опцию копирования.Как я могу отобразить сообщение тоста в опции копирования буфера обмена в android

<TextView 
        android:id="@+id/txtShareWinurl" 
        style="@style/matchWidth" 
        android:layout_height="@dimen/dimen_fifty" 
        android:layout_gravity="center" 
        android:layout_margin="@dimen/dimen_ten" 
        android:background="@drawable/verylight_gray_bg_border" 
        android:gravity="center" 
        android:padding="@dimen/dimen_five" 
        android:text="@string/app_name" 
        android:textColor="@color/gray_code" 
        android:textSize="@dimen/dimen_fifteen" 
        android:textIsSelectable="true" 
        android:textStyle="bold" /> 

В том, что я использовал textIsSelectable чем я получил окно с копировальной и SelectAll вариантов. Но когда я нажимаю на эту опцию, мне нужно показать тост. Пожалуйста, помогите мне.

Я пробовал и google некоторые ссылки, но мне это не удалось.

+0

Прочтите код, где u вызовите Toast – EE66

+0

после добавления textIsSelectable, если я долго кликнул, я получил буфер обмена. Если я нажму кнопку копирования, мне нужно отказаться от тоста. – Shankar

ответ

1

Это зависит от сценария, но вы можете обнаружить буфера обмена изменения с ClipboardManager:

ClipbardManager Documenation

Пример кода:

ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); 
clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { 
    @Override 
    public void onPrimaryClipChanged() { 
     Toast.makeText(MainActivity.this, "Content changed", Toast.LENGTH_LONG).show(); 
    } 
}); 
+0

Можете ли вы предоставить любую ссылку для обнаружения менеджера буфера обмена. – Shankar

+0

Я добавил пример кода – Christian

+0

спасибо somuch – Shankar

1

Проверить this из

Вы можете переопределить ClipboardManager's onPrimaryClipChanged() Listner

1

Единственный способ я знаю, заключается в использовании ActionMode.Callback интерфейсу

private class ActionModeCallbackWrapper implements ActionMode.Callback { 
    private final ActionMode.Callback wrapped; 

    private ActionModeCallbackWrapper(ActionMode.Callback wrapped) { 
     this.wrapped = wrapped; 
    } 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     return wrapped.onCreateActionMode(mode, menu); 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return wrapped.onPrepareActionMode(mode, menu); 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     return wrapped.onActionItemClicked(mode, item); 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     wrapped.onDestroyActionMode(mode); 
    } 
} 

И использовать его на ваш взгляд, как следующий (docs)

@Override 
public ActionMode startActionMode(ActionMode.Callback callback) { 
    mActionMode = super.startActionMode(new ActionModeCallbackWrapper(callback)); 
    return mActionMode; 
} 

Таким образом, вы можете обнаружить onActionItemClicked событие и показать тост или что-то вы хотите