2013-10-09 4 views
5

К сожалению, я не могу сделать эллипсис для работ EditText. Можно даже положить три точки в конце текста, когда текст слишком длинный? Он отлично работает для TextiView, но не для EditText. Некоторая идея?EditText ellipsize (три точки ...)

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 и свойства линий. –

+2

android: редактируемое свойство устарело, и Google рекомендует использовать 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.

Эллипсис не работает, если задан тип ввода.

Смежные вопросы