android:textIsSelectable 属性
もしくは
setTextIsSelectable() メソッド
を使います。
<RelativeLayout 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" >
<TextView
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is an Android Phone!"
android:textIsSelectable="true" />
</RelativeLayout>
編集できないので、ActionMode には「全体を選択」と「コピー」しか出てきません。
setTextIsSelectable() の中をみるとこんな感じです。
4650 public void setTextIsSelectable(boolean selectable) {
4651 if (mTextIsSelectable == selectable) return;
4652
4653 mTextIsSelectable = selectable;
4654
4655 setFocusableInTouchMode(selectable);
4656 setFocusable(selectable);
4657 setClickable(selectable);
4658 setLongClickable(selectable);
4659
4660 // mInputType is already EditorInfo.TYPE_NULL and mInput is null;
4661
4662 setMovementMethod(selectable ? ArrowKeyMovementMethod.getInstance() : null);
4663 setText(getText(), selectable ? BufferType.SPANNABLE : BufferType.NORMAL);
4664
4665 // Called by setText above, but safer in case of future code changes
4666 prepareCursorControllers();
4667 }
Android 3.0 から mTextIsSelectable というフィールドが新しく追加されています。
mTextIsSelectable はデフォルトでは false になっています。もちろん EditText でも false ですが、こちらは別の条件でテキスト選択が開始されます(具体的には editable かどうか)。
結構 2.3 のときと TextView のコード変わってて、なかなか面白いです。
0 件のコメント:
コメントを投稿