2016-03-30 28 views
3

EditTextを編集可能にすることはできますが、選択することはできませんか?私は少しのテキストを編集して、それをページの周りにドラッグできるようにしたい。それは動作しますが、ドラッグしている間は長いクリックとしてカウントされるため、テキストの一部が選択されます。Android EditText - 編集可能ですが選択できません。

EditTextをクリックしたときに別のビューを表示し、その代わりにタッチイベントをキャプチャしてから、イベントアクションが発生したときに非表示にしてeditTextにフォーカスを戻す必要がありますか?それはハッキー/過度に複雑なようです。

+0

あなたは、リスナーのあなたonLongClickイベントからtrueを返すてみましたか? – zgc7009

+0

長いクリックイベントではなく、タッチイベントですが、TextViewクラスには固有のlongclicklistenerがあります。 ACTION_DOWNのためにtrueを返すように言ってみましたが、edittextを移動するだけで、編集モードには行かず、キーボードをプルアップしません。 –

答えて

0

私は上記のものよりやや少ないハック解決策を見つけ、その後、試してみました(と、それは動作しませんでした)が、これは作業を行います。

最初にこれを行う、

image_text.cancelLongPress(); 

これは明らかに、それはカーソルを示す任意の継承クリックだけでなく、長いクリック、すなわちをキャンセルし、そしてそれは、任意のテキストを選択していないが、それはまた、キーボードを起動していないが、それは簡単です:

View v = activity.getWindow().getCurrentFocus(); 
     if (v != null) { 
      InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(v, 0); 
     } 
0

これは動作するはずです:android:textIsSelectable="false"

第二の可能な解決策は、イベントを消費する空onLongClickListenerを置くことであろう。たぶん

OnLongClickListener longClickListener = new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) {\ 
     return true; //true = event consumed, false = event not consumed 
    } 
}; 
+0

私はこれを試しました。それはうまくいかず、何かがそれを上書きしています。 私はxmlでプログラムでそれをやった –

0

ないまさにあなたが探しているソリューションが、EditTextが所定の場所にドロップされたとき、あなたが維持するために必要な場合、これは問題になりeditText.clearFocus();

を呼び出すことにより、選択範囲がないことを確認できましたドラッグする前に存在していた選択項目ですが、選択がクリアされたかどうかを確認したい場合は選択できません。

0
EditText myEditText = (EditText) findViewById(R.id.my_edit_text); 
myEditText.setTextIsSelectable(false); 
+0

答えを説明できますか? – Robert

+0

私はそれが自明であると思ったでしょう。たとえば、アクティビティのonCreate()メソッドで使用できます。最初の行はEditTextを取得し、2番目の行は長押しでは選択できませんが、ダブルタップは引き続き機能します。 Vladimirの提案(あなたのxmlでandroid:textIsSelectable = "false"を使う)の利点は、プロパティのオンとオフを切り替えることができるようにする場合です。 – eggdeng

+0

私の説明ではありません。私はあなたの答えが低品質であるとフラグが立てられており、そのような問題を解決しようとするすべてのユーザーにとってあなたの答えがより良いと説明できるので、お勧めします。 – Robert

1

setTextIsSelectable(false)を使用して、望ましい動作を達成しました。トリックはsetTextIsSelectable(true)を最初に実行することでした。 SDKのバグや機能を克服します(興味があればこの方法をデバッグしてください)。 Android 7.1.1でテスト済みイベントはのEditTextのデフォルトonLongClickListenerに進んでいないように

editText.setTextIsSelectable(true); // needed in order to next line work properly 
editText.setTextIsSelectable(false); 

// restore soft keyboard functionality broken by previous line 
editText.setFocusableInTouchMode(true); 
editText.setFocusable(true); 
editText.setClickable(true); 
関連する問題