如何将剪贴板粘贴到mono android c#中的edittext?

时间:2014-03-21 08:23:04

标签: c# android xamarin.android

我想将Android剪贴板文本粘贴到我的编辑文本中。

var button = MainActivity.This.FindViewById<Button> (Resource.AddLinks.btn_Paste);
EditText txt_Address = MainActivity.This.FindViewById<EditText> (Resource.AddLinks.txt_Address);
button.Click += (sender,e) =>
{
    txt_Address.Text=//How to Paste Android Clipbord?

};

1 个答案:

答案 0 :(得分:6)

这就像你想用Xamarin.Android做的其他事情一样。您需要首先了解如何在原生Android / Java上进行操作。然后将其转换为C#。

这是指向Android解决方案Android copy/paste from clipboard manager

的链接

以下是C#中的示例:

//for copy
var clipboard = (ClipboardManager)GetSystemService(ClipboardService);
var clip = ClipData.NewPlainText("your_text_to_be_copied");

clipboard.PrimaryClip = clip;


// And paste it
var clipboard = (ClipboardManager)GetSystemService(ClipboardService);

var pasteData = "";

if (!(clipboard.HasPrimaryClip)) 
{
    // If it does contain data, decide if you can handle the data.

} 
else if (!(clipboard.PrimaryClipDescription.HasMimeType(ClipDescription.MimetypeTextPlain)))
{

    // since the clipboard has data but it is not plain text

} 
else 
{
    //since the clipboard contains plain text.
    var item = clipboard.PrimaryClip.GetItemAt(0);

    // Gets the clipboard as text.
    pasteData = item.Text;
}

将Java转换为C#的基本经验法则。

  • Setters和Getters通常被翻译为属性
    • String text = item.getText(); => var text = item.Text;
    • item.setText(text); => item.Text = text;
  • ANDROID_CONSTANTS通常被翻译为Enums或Class const字段
    • Context.CLIPBOARD_SERVICE => Context.ClipboardService
    • MIMETYPE_TEXT_PLAIN => ClipDescription.MimetypeTextPlain

有关详细信息,请参阅http://docs.xamarin.com/guides/android/advanced_topics/api_design/