【问题标题】:how to paste clipboard to edittext in mono android c#?如何将剪贴板粘贴到单声道android c#中的edittext?
【发布时间】:2014-03-21 08:23:03
【问题描述】:

我想将 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?

};

【问题讨论】:

    标签: c# android xamarin.android


    【解决方案1】:

    这就像您想对 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# 的基本经验法则。

    • Setter 和 Getter 通常被转换为属性
      • String text = item.getText(); =&gt; var text = item.Text;
      • item.setText(text); =&gt; item.Text = text;
    • ANDROID_CONSTANTS 通常被转换为 Enums 或 Class const 字段
      • Context.CLIPBOARD_SERVICE =&gt; Context.ClipboardService
      • MIMETYPE_TEXT_PLAIN =&gt; ClipDescription.MimetypeTextPlain

    更多信息请参见http://docs.xamarin.com/guides/android/advanced_topics/api_design/

    【讨论】:

    • 我测试了这段代码,但我的解决方案或命名空间中不存在 ClipData 类...如何在我的应用程序中使用它?
    • 您的编译 API 级别设置为什么?如果您未满 11 岁,则可以使用 clipboard.Text 在 Honeycomb 中添加的 ClipData。同样,您确实需要查看 Android 文档。
    • android API 发生了一些变化——取而代之的是 ClipData.NewPlainText("your_text_to_be_copied");我们必须写 ClipData.NewPlainText("label", "your_text_to_be_copied")。其中 label 是剪辑数据的用户可见标签,存储在剪贴板中的数据的标签
    • 什么是粘贴事件?我想在粘贴发生时运行一些代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多