2013-07-03 3 views
2

Я создаю поле EditText с пользовательским фоном, но входной текст будет длиннее, чем само поле. Кроме того, текст должен быть в одной строке.Горизонтальная прокрутка текста внутри EditText

Моя идея - сделать текст «перемещаться влево», когда линия достигает конца поля. В некоторых приложениях я видел, что это возможно.

Я искал ответы, но не ответил на эту проблему. После того, как я объединил некоторые из них я пытался решить проблему таким образом:

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/edit_text" 
     android:textColor="#FFFFFF" 
     android:paddingLeft="5dp" 
     android:maxLines="1" 
     android:maxLength="25" 
     android:scrollHorizontally="true"/> 

Но, когда я набираю текст и он достигает конец поля EditText, он начинает растягивать мой полевой («@ Drawable/edit_text» в частности), пока не достигнет 25 символов.

Кроме того, когда я меняю layout_width на какое-то определенное значение, текст идет во 2-й строке при достижении конца (даже если maxLines все еще 1).

ответ

2

У меня есть. Дело в том, что вам нужно поставить EditText внутри RelativeLayout. Теперь он работает.

<RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/edit_text"> 
     <EditText 
      android:layout_width="120dp" 
      android:layout_height="21dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:layout_margin="6dp" 
      android:background="#00000000" 
      android:imeOptions="actionDone" 
      android:inputType="textPersonName" 
      android:maxLength="20" 
      android:maxLines="1" 
      android:paddingLeft="2dp" 
      android:textColor="#FFFFFF"/> 
    </RelativeLayout> 
+0

Я не мог заставить это работать. – jcaruso

0

Поместите свой EditText внутри HorizontalScrollView и он работает ..

  <HorizontalScrollView 
       android:id="@+id/rlEmail" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:scrollHorizontally="true" 
       android:layout_alignLeft="@+id/etPhone" 
       android:layout_alignRight="@+id/imgBtnEdit" 
       android:layout_below="@+id/etPhone" > 
       <EditText 
        android:id="@+id/etEmail" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:ems="10" 
        android:enabled="false" 
        android:focusable="false" 
        android:text="[email protected]" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:scrollHorizontally="true" /> 
      </HorizontalScrollView> 
+1

Это сработало. Фактически, это единственное, что сработало. Мне не нужно свойство enabled = "false", но все остальное было. – Gail

2

Он работал после добавления

android:scrollHorizontally="true" 
android:singleLine="true" 
android:gravity="right|center_vertical" 

В

<EditText 
     android:background="@drawable/sk" 
     android:id="@+id/ed" 
     android:textSize="@dimen/sed" 
     android:textColor="@color/tc" 
     android:scrollHorizontally="true" 
     android:singleLine="true" 
     android:gravity="right|center_vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

моему EditText

+1

sIngleLine сейчас устарел – anivaler

+1

Я знаю это, но после удаления, что это не сработало, я протестировал его на вкладках Samsung galaxy s и Samsung galaxy star pro –

+0

Мой вопрос: Почему мне нужно использовать «\\ |» в методе String.split, но только "|" в методе String.replace или String.indexOf –

5

После некоторого исследования я нашел его рабочим.

Использование android:inputType="text" внутри EditText Работало для меня.

Надеюсь, это поможет кому-то и сэкономит ваше время :)

+0

Правильно! Это предотвратит символ '\ n', создавая его один текст линии. Это должно сработать. –

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