2013-10-09 3 views
5

불행히도 EditText 작업에 줄임표를 만들 수 없습니다. 텍스트가 너무 길 때 텍스트 끝에 세 개의 점을 넣을 수 있습니까? TextTView에는 완벽하게 작동하지만 EditText에는 적합하지 않습니다. 어떤 생각?EditText 줄임표 (세 점 ...)

android:id="@+id/ed_email_personalInfo" 
android:layout_width="match_parent" 
android:layout_height="55dp" 
android:background="@color/transparent" 
android:ellipsize="end" 
android:ems="10" 
android:hint="@string/email" 
android:inputType="textEmailAddress" 
android:maxLength="64" 
android:paddingLeft="10dp" 
android:paddingRight="10dp" 
android:singleLine="true" 
android:textColorHint="@color/col9a9a9a" 
android:textSize="15.7sp" 

답변

0

(직접보기를 만들지 않는 한) EditText에서 불가능할 수도 있습니다. 기본 동작 (singleLine EditText)은 뷰에 맞지 않을 때 텍스트를 옆으로 스크롤 할 수 있다고 생각합니다.

13

텍스트를 편집하려면이 속성을 설정하십시오. Elipsize는

android:lines="1" 
    android:scrollHorizontally="true" 
    android:ellipsize="end" 
    android:singleLine="true" 
    android:editable="false" 
+0

감사합니다. 완벽하게 작동했습니다. –

+0

작동합니다. 그리고 scrollHorizontally 및 lines 속성을 설정할 필요가 없습니다. –

+2

android : editable 속성은 사용되지 않으며 android : inputType을 사용하는 것이 좋습니다. 그러나, 내 테스트에 따르면, 안드로이드가 존재한다면 더 이상 작동하지 않을 것이다 : inputType – Jacky

-2

당신은 EditText를 확장하는 새로운 클래스를 작성해야합니다 비활성화 편집 텍스트와 함께 일하고있다. 예 :

MyEditTextEllipsize extends EditText{ 

private String dotsString; 

private String storeString; 

public MyEditTextEllipsize(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

@Override 
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { 
     super.onFocusChanged(focused, direction, previouslyFocusedRect); 

     if(focused) 

    { 
     setText(storeString); 
     }else { 
      String NOW = getText().toString(); 
       storeString = NOW; 
      if (NOW != null && getWidth() <= getTextSize() * NOW.length()) { 

        dotsString = NOW.substring(0, (int) (getWidth()/getTextSize())) + "..."; 

        setText(dotsString); 

       } 
} 

    } 
} 
9

android:inputType 속성을 제거해야합니다.

inputType이 정의되면 줄임표가 작동하지 않습니다.