Android textView 复制问题
本人想给TextView做一个Menu里面有一些选项,其中一项是复制,希望能够将这个TextView里面的文字直接放入到Android自带的剪切板中...敢问Androi...
本人想给TextView做一个Menu里面有一些选项,其中一项是复制,希望能够将这个TextView里面的文字直接放入到Android自带的剪切板中...敢问Android大虾们,肿么做~!!
展开
5个回答
推荐于2017-09-02 · 知道合伙人软件行家
关注
展开全部
方法一:在布局文件的TextView控件属性中增加一句:android:textIsSelectable="true"
方法二:直接上代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:background="#80FF00"
android:gravity="center"
android:text="长按此处跳出复制选框"
android:textColor="#000000" />
</LinearLayout>
</LinearLayout>
package com.example.copytest;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.text.ClipboardManager;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView tv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
tv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
test();
return false;
}
});
}
public Dialog test() {
Dialog dialog = new AlertDialog.Builder(this).setTitle("提示")
.setNegativeButton("取消", null)
.setItems(new String[] { "复制" }, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String string = tv.getText().toString();
copy(string, getBaseContext());
Toast.makeText(getBaseContext(), "文本已复制到粘贴板", 2000)
.show();
}
}).create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
return dialog;
}
public static void copy(String content, Context context) {
// 得到剪贴板管理器
ClipboardManager cmb = (ClipboardManager) context
.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(content.trim());
}
}
方法二:直接上代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:background="#80FF00"
android:gravity="center"
android:text="长按此处跳出复制选框"
android:textColor="#000000" />
</LinearLayout>
</LinearLayout>
package com.example.copytest;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.text.ClipboardManager;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView tv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
tv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
test();
return false;
}
});
}
public Dialog test() {
Dialog dialog = new AlertDialog.Builder(this).setTitle("提示")
.setNegativeButton("取消", null)
.setItems(new String[] { "复制" }, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String string = tv.getText().toString();
copy(string, getBaseContext());
Toast.makeText(getBaseContext(), "文本已复制到粘贴板", 2000)
.show();
}
}).create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
return dialog;
}
public static void copy(String content, Context context) {
// 得到剪贴板管理器
ClipboardManager cmb = (ClipboardManager) context
.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(content.trim());
}
}
展开全部
//定义一个粘贴板管理器
final ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
//在Menu事件呼叫的时候运行这一行代码 文字就复制到粘贴板了
clipBoard.setText(textview.getText());
//想粘贴文字的时候也一样是一行
textview.setText(clipBoard.getText());
//相信你能看懂,看不懂的话我也帮不了你… 只能学学基础了
final ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
//在Menu事件呼叫的时候运行这一行代码 文字就复制到粘贴板了
clipBoard.setText(textview.getText());
//想粘贴文字的时候也一样是一行
textview.setText(clipBoard.getText());
//相信你能看懂,看不懂的话我也帮不了你… 只能学学基础了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ClipboardManager来处理:
final ClipboardManager cb = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
响应复制的时候,获取TextView的文字放入cb中:
cb.setText(textview.getText());
粘贴的时候只要把cb中保存的内容提取出来即可:
textview.setText(cb.getText());
final ClipboardManager cb = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
响应复制的时候,获取TextView的文字放入cb中:
cb.setText(textview.getText());
粘贴的时候只要把cb中保存的内容提取出来即可:
textview.setText(cb.getText());
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
获取textview中的文字的方法应该是gettext,获取后用clipboardmanager来处理就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请稍候,正在解答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询