2011-12-02 2 views
21

소프트 키로 편집 할 때 다음과 같은 특징을 가지고 EditText을 사용하려고합니다. 설명서를 준비하고 여기에서 검색하고 매개 변수를 사용했지만 작동하는 구성을 찾을 수 없습니다.한 줄짜리 텍스트 줄 바꾸기 및 완료 작업 EditText?

  1. 화면의 EditView보기에는 몇 줄 (예 : 3-4)의 높이가 있습니다.
  2. 내용 텍스트가 한 줄로 구성됩니다 (줄 바꿈 없음).
  3. 내용 텍스트가보기 너비보다 긴 경우 다음 줄로 넘어 가야합니다.
  4. 소프트 키의 Enter 키에 완료 작업 레이블이 표시됩니다.

{1,2,3}과 {1,2,4}는 얻을 수 있지만 {1,2,3,4}은 얻을 수 없습니다. 내 내용은 내용이 한 줄 (줄 바꿈 없음)이므로 Enter 키는 사용되지 않으므로 Done 레이블로 변경할 수 있어야합니다.

내 설정 코드는 가능이

editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE); 
editText.setHorizontallyScrolling(false); 
editText.setSingleLine(false); 
// This does not work. Soft keyboard has Enter action. 
editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

처럼 보인다? 어떠한 제안?

+0

아무에게도 이것이 적어도 할 수 없다는 것을 확인해 줄 수 있습니까? – user1076637

+0

[이 질문 [1]에 대한 답변에서 개략적으로 설명 된 줄 바꿈. [1] : http://stackoverflow.com/questions/3276380/android-word-wrap-edittext-text –

+0

감사는 T. 네,이하지만 얻는 방법은 함께 포장 작업 않습니다 위에 # 4가 필요하십니까? – user1076637

답변

32

원하는 구성을 생산한다 조합 (그리고 EditText 메소드 호출의 특정 순서) :

editText.setInputType(
    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 
    editText.setSingleLine(true); 
    editText.setLines(4); // desired number of lines 
    editText.setHorizontallyScrolling(false); 
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
+0

굉장한! 가상 포옹 :) –

+1

동적으로 높이를 변경하려면 – user2798694

+0

Thx 정답을 사용하십시오. 다른 사람들은 EditText에 속성을 설정할 때 암시 적 계약을 숨겨 놓았으므로 조작 순서가 중요합니다. 한 줄의 EditText로 시작하고 maxLines에 도달 할 때까지 다음 줄로 autowrap하기 만하면됩니다. editText.setLines (4); 포함 : editText.setMaxLines (maxLines = 5); – xyman

6

그냥 프로그램 활동에 글고 인스턴스와

editText.setHorizontallyScrolling(false); 
editText.setMaxLines(Integer.MAX_VALUE); 

를 추가합니다.

사용자가 IME 옵션을 사용하여 여러 줄에 소프트 줄 바꿈으로 표시되는 한 줄짜리 문자열을 편집 할 수 있도록 EditText 인스턴스를 구성합니다.

+1

레이아웃 XML에서이 값을 설정할 수 없으므로 무시됩니다. OP가 말한 것처럼 프로그래밍 방식으로 설정하십시오. – Evan

관련 문제