Android 自动复制首选项屏幕中的文本
以前可能有人问过这个问题,但我到处寻找答案,却找不到答案 我在Android应用程序中有一个PreferenceScreen,其中有一个EditTextPreferences列表,我在代码中以编程方式设置其值。但是,其中一个值不应可编辑,但用户必须能够复制该值(粘贴到网站上的特定字段中)。在当前状态下,用户可以更改它,但我不希望发生这种情况 我尝试过使用android:inputType=“none”,但似乎不起作用 我想出了一个不同的主意,但我不确定这是否行得通。我可以这样做吗?当用户单击字段时,它会自动复制值(可能会显示一个祝酒词,上面写着“value copied”或其他什么),这样他们就可以将其粘贴到其他地方?然后我就可以把它变成一个常规的首选项字段或其他什么,而不必担心用户更改值 有人能给我一些建议吗?是的,这是可能的 将其设置为Android 自动复制首选项屏幕中的文本,android,copy,preferenceactivity,Android,Copy,Preferenceactivity,以前可能有人问过这个问题,但我到处寻找答案,却找不到答案 我在Android应用程序中有一个PreferenceScreen,其中有一个EditTextPreferences列表,我在代码中以编程方式设置其值。但是,其中一个值不应可编辑,但用户必须能够复制该值(粘贴到网站上的特定字段中)。在当前状态下,用户可以更改它,但我不希望发生这种情况 我尝试过使用android:inputType=“none”,但似乎不起作用 我想出了一个不同的主意,但我不确定这是否行得通。我可以这样做吗?当用户单击字段
之后,您可以添加一个单击式侦听器,如
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;
}});
很简单!
您可以自定义与上面的首选项屏幕相同的布局。
对于每个EditText,设置android:textIsSelectable=“true”以首先选择文本。在editText.setCustomSelectionActionModeCallback(actionModeCallback)之后;显示上下文操作模式(一个浮动菜单,其中包含您定义的与所需功能相对应的按钮)。您可以在谷歌上搜索这个实现细节。
第三,将文本复制并添加到剪贴板
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);
}
从现在起,您复制的文本将保存在剪贴板中,您可以将其粘贴到其他受支持的视图中。谢谢!我结合了你的两个答案,它工作得非常完美(当然,在对我的代码进行了一些修改之后)!谢谢我结合了你的两个答案,它工作得非常完美(当然,在对我的代码进行了一些修改之后)!