如何为Android中的TextView启用标准复制粘贴?

Ixx*_*Ixx 106 android copy-paste textview

我想为TextView启用标准复制粘贴(与EditText相同).我该怎么做?

我尝试使用不可编辑的EditText但它运行不正常(有时它变得可编辑或者没有显示复制粘贴叠加).而且一般来说这可能不是一个好方法.

需要从API 7开始的工作解决方案.

Com*_*are 204

试试android:textIsSelectable.

android:textIsSelectable="true"


小智 55

要为TextView启用标准复制/粘贴,U可以选择以下选项之一:

  1. 更改布局文件:将以下属性添加到TextView

    android:textIsSelectable="true"

  2. 在Java类中编写此行以编程方式设置它. myTextView.setTextIsSelectable(true);

长按TextView,您可以看到复制/粘贴操作栏.

  • 此解决方案优于使用绿色复选标记标记正确的解决方案. (2认同)

Ixx*_*Ixx 19

这适用于复制pre-Honeycomb:

import android.text.ClipboardManager;

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        ClipboardManager cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
        cm.setText(textView.getText());
        Toast.makeText(context, "Copied to clipboard", Toast.LENGTH_SHORT).show();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 一个好的策略是将它与CommonsWare的答案一起使用.由于在布局中添加了"android:textIsSelectable",因此在较低的API级别上会被忽略.然后在if语句中使用Ixx的解决方案,检查API级别是否低于11.两个世界中最好的.关于`android:textIsSelectable`的好处是,它为您提供了平台的文本选择操作栏,并且具有良好的原生感. (4认同)

Agi*_*nbu 11

在 xml textview 中粘贴此代码

android:textIsSelectable="true"
Run Code Online (Sandbox Code Playgroud)

然后在java文件中,

 final TextView txtcopypaste = findViewById(R.id.txtcopypaste); // my textview
    txtcopypaste.setOnClickListener(new View.OnClickListener() { // set onclick listener to my textview
        @Override
        public void onClick(View view) {
            ClipboardManager cm = (ClipboardManager)getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
            cm.setText(txtcopypaste.getText().toString());              
            Toast.makeText(getApplicationContext(), "Copied :)", Toast.LENGTH_SHORT).show();
        }
    });
Run Code Online (Sandbox Code Playgroud)

要求:需要复制并粘贴textview中的文本。

结果:使用 textview ,一旦我点击了 textview 。它会自动复制文本视图中的文本。

注意:在导入剪贴板管理器时尝试更喜欢

请首选文本剪贴板管理器

import android.text.ClipboardManager; // prefer this 
Run Code Online (Sandbox Code Playgroud)

尽量避免内容剪贴板管理器

import android.content.ClipboardManager; // Not this
Run Code Online (Sandbox Code Playgroud)


AZ_*_*AZ_ 10

需要API 11,更新代码,不推荐使用以前的方法

没有主题全屏的解决方案 ActionBar

扩展TextView并在构造函数中粘贴以下代码

this.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                ClipboardManager cManager = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
                ClipData cData = ClipData.newPlainText("text", getText());
                cManager.setPrimaryClip(cData);
                Util.toast(mContext, string.text_copyed);
                return true;
            }
        });
Run Code Online (Sandbox Code Playgroud)


Mic*_*Mao 5

  1. 使用主题

    @android:style/Theme.Black.NoTitleBar.Fullscreen
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    @android:style/Theme.WithActionBar
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在xml中设置TextView

    android:textIsSelectable="true"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 查看结果