ListView
各アイテムがですTextView
。
EditText
「すべて選択」、「すべて切り取り」、「すべてコピー」などの項目を含むデフォルトのコンテキストメニューを表示するのと同様の長押し動作を有効にしたいと考えています。
これを有効にする簡単な方法はありTextView
ますか?
ListView
各アイテムがですTextView
。
EditText
「すべて選択」、「すべて切り取り」、「すべてコピー」などの項目を含むデフォルトのコンテキストメニューを表示するのと同様の長押し動作を有効にしたいと考えています。
これを有効にする簡単な方法はありTextView
ますか?
私には解決策があると思います。電話するだけ
registerForContextMenu(yourTextView);
TextView
コンテキストメニューイベントを受信するために登録されます 。
次に、 :をオーバーライドonCreateContextMenu
します。Activity
@Override
public 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());
}
これがあなたや他の人からテキストをコピーする方法を探している人に役立つことを願っていますTextView
実際、この機能を自分で開発する必要はありません。EditText の android:editable を false に設定している間は、TextView の代わりに EditText を使用する必要があります。私のコードはここにあります:
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 {
@Override
public 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);
}
}
アイテムを長押しして、テキストの選択、コピー、切り取り、貼り付けなどを選択できます。
ListView に onItemLongClickListener を登録し、選択したアイテムに基づいて、選択したオプションをユーザーに提供することができます。