以前可能有人问过这个问题,但是我到处搜索了答案,但找不到答案。
我的Android应用程序中有一个PreferenceScreen,其中包含EditTextPreferences列表,该列表以编程方式在代码中设置了值。但是,这些值之一不可编辑,但用户必须能够复制该值(粘贴在网站上的特定字段中)。在当前状态下,用户可以更改它,但是我不希望这种情况发生。
我尝试使用android:inputType =“ none”进行调查,但似乎无法正常工作。
我想出了一个不同的主意,但不确定是否可行。我可以做到这一点,以便当用户单击该字段时它会自动复制该值(并且可能会显示一个吐司说“复制的值”或类似内容),以便他们可以将其粘贴到其他位置吗?然后,我可以将其设置为常规首选项字段或其他内容,而不必担心用户更改值!
有人可以给我有关此的任何提示吗?
答案 0 :(得分:1)
是的。
将其设为<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;
}});
答案 1 :(得分:1)
很简单! 您可以自定义与上面的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);
}
从现在开始,您复制的文本位于“剪贴板”中,您可以将其粘贴到其他受支持的视图中。