2011-08-09 4 views
4

다른 Android 애플리케이션의 텍스트 선택 방법이 서로 다른 것으로 나타났습니다. 브라우저에서 클릭 한 상태로 있으면 텍스트가 클로즈업되고 왼쪽 및 오른쪽 가장자리를 드래그하여 선택 영역을 수정할 수 있습니다. Gmail 앱에서는 커서 아래에 큰 파란색 원이 표시되어 쉽게 이동할 수 있습니다.화면상의 텍스트 선택 위젯을 어떻게 바꿀 수 있습니까?

EditText 상자의 기본 텍스트 선택 위젯은 매우 원시적입니다. 어떻게 변경 될 수 있습니까?

업데이트 : 편집 가능한 항목이 거짓임을 잊어 버렸습니다. 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의"비 편집 가능한 텍스트의 내용을 선택할 수 있음을 나타냅니다.

용어에 관한 질문은 커서이라고합니다.

관련 문제