web-dev-qa-db-ja.com

AndroidでTextViewの標準コピーペーストを有効にするにはどうすればよいですか?

TextViewの標準コピーペーストを有効にしたい(EditTextの場合と同じ)。どうすればいいですか?

編集不可能なEditTextを使用しようとしましたが、うまく機能しませんでした(編集可能になるか、コピーペーストオーバーレイが表示されないことがありました)。そして、一般的にはおそらく良いアプローチではありません。

API 7以降の実用的なソリューションが必要です。

104
Ixx

これは、ハニカムの前のハニカムで機能します:

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();
    }
});
19
Ixx

Android:textIsSelectable を試してください。

すなわち、Android:textIsSelectable="true"

193
CommonsWare

TextViewの標準のコピー/貼り付けを有効にするために、Uは次のいずれかを選択できます。

  1. レイアウトファイルの変更:TextViewに以下のプロパティを追加します

    Android:textIsSelectable="true"

  2. Javaクラスにこの行を記述して、プログラムで設定します。 myTextView.setTextIsSelectable(true);

TextViewを長押しすると、コピー/貼り付けアクションバーが表示されます。

54
RamiReddy

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;
            }
        });
9
AZ_
  1. テーマを使用

    @Android:style/Theme.Black.NoTitleBar.Fullscreen
    

    または

    @Android:style/Theme.WithActionBar
    
  2. xmlにTextViewを設定します

    Android:textIsSelectable="true"
    
  3. result を参照

3
Michael Mao

Xml textviewでこのコードを貼り付けます

Android:textIsSelectable="true"

次に、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();
        }
    });

要件: textviewにあるテキストをコピーして貼り付ける必要があります。

OutCome: textviewをクリックすると、textviewを使用します。 textviewにあるテキストを自動的にコピーしました。

注: clipboardmanagerのインポート中に、

テキストクリップボードマネージャーを選択してください

import Android.text.ClipboardManager; // prefer this 

コンテンツクリップボードマネージャーを避けるようにしてください

import Android.content.ClipboardManager; // Not this
1
Agilanbu

this の方が良い:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
final Android.content.ClipboardManager clipboardManager = (Android.content.ClipboardManager) context
        .getSystemService(Context.CLIPBOARD_SERVICE);
final Android.content.ClipData clipData = Android.content.ClipData
        .newPlainText("text label", "text to clip");
clipboardManager.setPrimaryClip(clipData);
} else {
final Android.text.ClipboardManager clipboardManager = (Android.text.ClipboardManager) context
        .getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.setText("text to clip");
}
0
Beeing Jk

EditTextの場合、アクティビティ内のマニフェストでAndroid:windowSoftInputMode="adjustResize"を使用します

0
rajeesh