Android: Căn chỉnh dọc cho nhiều dòng EditText (Vùng văn bản)


232

Tôi muốn có 5 dòng cho chiều cao của vùng văn bản. Tôi đang sử dụng mã sau đây.

<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" />

Vùng văn bản trông ổn, nhưng vấn đề là con trỏ đang nhấp nháy ở giữa trường văn bản. Tôi muốn nó nhấp nháy ở dòng đầu tiên, ở ký tự đầu tiên của trường văn bản.


15
cố gắng loại bỏ "trọng tâm" trọng lực của bạn, có thể là vấn đề
Sephy

Câu trả lời:



99

Điều này tương tự như câu trả lời của CommonsWare nhưng với một điều chỉnh nhỏ : android:gravity="top|start". Ví dụ mã hoàn chỉnh:

<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
Không sử dụng top|lefttrừ khi bạn biết bạn có thể kiểm soát tất cả các ngôn ngữ trong ứng dụng của mình, có rất nhiều ngôn ngữ từ phải sang trái ( en.wikipedia.org/wiki/Right-to-left ) Giữ thân thiện với địa phương hóa
MariusBudin

1
@MariusBudin Có lẽ, top|startsẽ là sự thay thế chính xác?
ban-geengineering

19

Bạn có thể sử dụng Edittext này .... Điều này sẽ giúp bạn.

<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" />

nó sẽ làm việc


3

Bây giờ một ngày sử dụng trọng lực startlà tốt nhất:

android:gravity="start"

Đối với 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"
/>

Bạn có thể làm sáng tỏ lý do tại sao điều này làm việc? Tôi đã dự kiến ​​sẽ startlàm việc như thế nào left(đối với các ngôn ngữ phương Tây) - tức là chỉ ảnh hưởng đến trọng lực ngang, nhưng dường như nó cũng làm công việc của topnó.
ban-geengineering

Vâng, bạn đúng. Chúng tôi chủ yếu sử dụng điều này để hỗ trợ RTL. Giống như trong ngôn ngữ Ả Rập, nó đi sang phải, thay vì trái. Và nó cũng đi đến topđó bạn đã hỏi. Nói chung, chúng tôi bắt đầu viết từ phía trên bên trái, đó là lý do tại sao điều này STARTcũng thể hiện các đặc điểm tương tự. @ ban-Geoengineering
Hasib Akter

2

Tôi nghĩ rằng bạn có thể sử dụng layout:weight = 5thay android:lines = 5vì bởi vì khi bạn chuyển ứng dụng của mình sang thiết bị nhỏ hơn - nó sẽ hoạt động tốt .. tốt, cả hai thuộc tính sẽ hoàn thành công việc của bạn ..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.