Android:多行EditText(文本区域)的垂直对齐


232

我想为文本区域的高度设置5行。我正在使用以下代码。

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:singleLine="false"
    android:lines="5"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip" />

文本区域看起来不错,但是问题在于光标在文本字段的中间闪烁。我希望它在文本字段的第一个字符的第一行闪烁。


15
尝试消除重力“中心”,可能是问题所在
Sephy 2010年

Answers:



99

这类似于CommonsWare的答案,但有一个小的调整:android:gravity="top|start"。完整的代码示例:

<EditText
    android:id="@+id/EditText02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="top|start"
    android:inputType="textMultiLine"
    android:scrollHorizontally="false" 
/>

8
top|left除非您知道可以控制应用程序中的所有语言,否则不要使用,那里有很多从右到左的语言(en.wikipedia.org/wiki/从右到左)保持对本地化友好
MariusBudin 2014年

1
@MariusBudin大概top|start是正确的选择吗?
ban-geoengineering

19

U可以使用此Edittext...。这将为您提供帮助。

<EditText
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lines="5"
android:gravity="top|left"
android:inputType="textMultiLine" />


6
<EditText android:id="@+id/EditText02" android:layout_width="120dp"
    android:layout_height="wrap_content" android:lines="5" android:layout_centerInParent="true"
    android:gravity="top|left" android:inputType="textMultiLine"
    android:scrollHorizontally="false" android:minWidth="10.0dip"
    android:maxWidth="180dip" />

它会工作


3

现在每天使用重力start是最好的选择:

android:gravity="start"

对于EditText(textarea):

<EditText
    android:id="@+id/EditText02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="start"
    android:inputType="textMultiLine"
/>

您能否阐明其工作原理?我本来希望start工作得像left(对于西方语言)-即,仅影响水平重力,但它似乎也可以完成top
ban-geoengineering

是的,你是对的。我们主要将其用于支持RTL。像阿拉伯语一样,它是向右而不是向左。而且还涉及top您已经问过的问题。通常,我们从左上角开始写作,这就是为什么它START也显示相同的特征。@ ban-
geoengineering

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.