Copy text from TextView on Android Copy text from TextView on Android android android

Copy text from TextView on Android


I think I have a solution.Just call
registerForContextMenu(yourTextView);

and your TextView will be registered for receiving context menu events.

Then override onCreateContextMenu in your Activity:

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {    //user has long pressed your TextView    menu.add(0, v.getId(), 0, "text that you want to show in the context menu - I use simply Copy");    //cast the received View to TextView so that you can get its text    TextView yourTextView = (TextView) v;    //place your TextView's text in clipboard    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);     clipboard.setText(yourTextView.getText());}

Hope this helps you and anyone else looking for a way to copy text from a TextView


Actually, you do not have to develop this feature by yourself. You just need to use EditText instead TextView, while you set the android:editable of EditText to false. My code is here:

R.layout.edittext.xml

<EditText xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="40dip"android:editable="false" android:background="@null"android:textColor="#FFFFFF"/>

ListItemCopyTextActivity.java

public class ListItemCopyTextActivity extends Activity {    @Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    LinearLayout ll = new LinearLayout(this);    ListView lv = new ListView(this);    String[] values = new String[15];    for (int i = 0; i < 15; i++) {        values[i] = "ListItem NO." + i;    }    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,            R.layout.edittext, values);    lv.setAdapter(adapter);    ll.addView(lv, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);    setContentView(ll);    }}

You can just long click the item, and choose the select text, copy, cut, past etc.


To allow users to copy some or all of the TextView's value and paste it somewhere else,

set the XML attribute {@link android.R.styleable#TextView_textIsSelectable android:textIsSelectable} to "true"

or

call {@link #setTextIsSelectable setTextIsSelectable(true)}.