2011-08-09 7 views
4

さまざまなAndroidアプリケーションに異なるテキスト選択方法があることに気付きました。ブラウザでクリックすると、テキストがクローズアップされ、左右の端をドラッグして選択範囲を変更できます。 Gmailアプリでは、カーソルの下に大きな青色の円が表示され、移動が容易になります。画面上のテキスト選択ウィジェットはどのように変更できますか?

EditTextボックスのデフォルトのテキスト選択ウィジェットは、非常にプリミティブです。どのように変更できますか?

更新:editableがfalseであることを忘れていました。 editableがtrueの場合、テキストセレクタは正常です。

p.s.画面上のテキストセレクタの名前はなんですか?

答えて

4

Android 3.0(APIレベル11)では、TextViewandroid:textIsSelectable属性を設定して、テキストを選択可能にすることができます。この記事の時点でのデフォルトのUIは、ブラウザで参照した動作と似ています。

EDIT:また、デフォルトのAndroidブラウザは、Gingerbreadのデフォルトのテキスト選択ハンドルに似た独自のシステムに依存しないテキスト選択メカニズムを使用します。 「青い丸」は、携帯電話メーカーが追加したカスタマイズされたインターフェイスのように聞こえる。

1

EditTextを拡張し、LongClickListenerClickListenerを実装するカスタムクラスとして実装します。その後、完全な制御を行うことができます。

これは、すべてのちょうど擬似コードで、正しい方向にあなたを指すように:

public class PrettySelectionEditText extends EditText implements OnLongClickListener, OnClickListener 
{ 
    private boolean isSelecting = false; 

    public PrettySelectionEditText(Context context) 
    { 
     super(context); 
    } 

    @Override 
    public boolean onLongClick(View v) 
    { 
     if (clickIsOnText) 
     { 
      isSelecting = true; 
      //Highlight word and pretty controls 
     } 
     //Select here based on the text they've clicked on? 

     //Return true if you want to consume the longClick 
     return true; 
    } 

    @Override 
    public void onClick(View v) 
    { 
     //If in selection mode 
     if (isSelecting) 
     { 
      //check where they've clicked 
      if (clickIsInSelect) 
      { 
       updateSelection(click); 
      } 
      else 
      { 
       isSelecting = false; 
      } 
     } 
    } 
} 
1

あなたが代わりにWebViewを使用してテキストの選択を可能にすることができます。

1

これは単に編集不可能なテキストをハイライト表示することができないという問題がある場合は、そのEditTextボックスのXML属性

android:textIsSelectable="true" 

を使用することができます。

アンドロイド:アンドロイドwebsiteから

textIsSelectable =「true」が非編集可能なテキストの内容を選択することができることを示しています。

用語に関するご質問は、のカーソルとします。

関連する問題