143

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

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

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

4

9 に答える 9

258

試してみてくださいandroid:textIsSelectable

つまり、android:textIsSelectable="true"

于 2012-04-30T15:45:16.023 に答える
64

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

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

    android:textIsSelectable="true"

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

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

于 2014-03-05T07:29:11.363 に答える
26

これは、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();
    }
});
于 2012-08-21T11:46:51.450 に答える
3
  1. テーマを使用

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

    また

    @android:style/Theme.WithActionBar
    
  2. xmlでTextViewを設定する

    android:textIsSelectable="true"
    
  3. 結果を見る

于 2015-11-23T08:33:27.410 に答える
-1

これはより良いです:

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");
}
于 2015-11-30T03:35:28.407 に答える
-2

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

于 2015-03-06T12:22:47.873 に答える