2013-07-03 167 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字段的末尾时,它舒展我的领域(“@绘制/ edit_text”特别是),直到我达到25个字符。

另外,当我将layout_width更改为某个特定值时,到达结束时文本将进入第二行(即使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

我知道,但删除后,它不起作用,我测试了它在三星Galaxy Tab和s3星系明星亲 –

+0

我的问题是:为什么我需要使用“\\ |”在String.split方法中,但只有“|”在String.replace或String.indexOf方法中 –

5

经过一番研究,我发现它工作。

使用android:inputType="text"里面EditText为我工作。

希望这会帮助别人,并会节省您的时间:)

+0

对!这将防止'\ n'字符使其成为一行文本。这应该工作。 –