Автоматически копировать текст на экране настроек - PullRequest
0 голосов
/ 24 августа 2018

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

В моем приложении для Android есть PreferenceScreen со списком EditTextPreferences, в котором я программно устанавливаю значение в своем коде. Однако одно из этих значений не должно быть редактируемым, но пользователь должен иметь возможность скопировать это значение (вставить в определенное поле на веб-сайте). В его текущем состоянии пользователь может изменить его, но я не хочу, чтобы это произошло.

Я попытался использовать android: inputType = "none", но, похоже, это не работает.

У меня возникла другая идея, но я не уверен, сработает ли это. Могу ли я сделать так, чтобы, когда пользователь щелкает по полю, он автоматически копировал значение (и, вероятно, отображал тост с надписью «скопированное значение» или что-то в этом роде), чтобы он мог вставить его куда-нибудь еще? Тогда я мог бы просто превратить это в обычное поле предпочтений или что-то в этом роде, и не беспокоиться о том, что пользователь изменит значение!

Кто-нибудь может дать мне какие-либо советы по этому поводу?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Это просто!Вы можете настроить макет так же, как ваш PreferenceScreen выше.Для каждого EditText установите android: textIsSelectable = "true", чтобы сначала сделать текст доступным для выбора.После editText.setCustomSelectionActionModeCallback (actionModeCallback);отображать контекстный режим действий (плавающее меню с кнопками, которые вы определяете, соответствует вашей функции, которую вы хотите).Вы можете Google это для детализации реализации.В-третьих, копирование и добавление текста в буфер обмена

private void copyText() {
    ClipboardManager clipboardManager = (ClipboardManager)
            getSystemService(Context.CLIPBOARD_SERVICE);

    CharSequence selectedTxt =  yourEditText.getText().subSequence(yourEditText.getSelectionStart(), yourEditText.getSelectionEnd());
    ClipData clipData = ClipData.newPlainText("text view", selectedTxt);
    clipboardManager.setPrimaryClip(clipData);
}

С этого момента ваш скопированный текст находится в буфере обмена, и вы можете вставить его в другой поддерживаемый вид.

0 голосов
/ 24 августа 2018

Да, это возможно.

Сделать это <Preference>

После этого вы можете добавить слушателя по щелчку, как

    getPreferenceScreen().findPreference(prefkey)
        .setOnPreferenceClickListener(new OnPreferenceClickListener(){
        public boolean onPreferenceClick(Preference preference)
        {   
            String oldValue = sharedPreferences.getString(prefkey, prefdefaultvalue);

            // You can do what you want here like copy value to clipboard and display toast

        return true;
        }});
...