Câu trả lời:
Theo mặc định, tất cả các EditText
tiện ích trong Android là đa tuyến.
Đây là một số mã mẫu:
<EditText
android:inputType="textMultiLine" <!-- Multiline input -->
android:lines="8" <!-- Total Lines prior display -->
android:minLines="6" <!-- Minimum lines -->
android:gravity="top|left" <!-- Cursor Position -->
android:maxLines="10" <!-- Maximum Lines -->
android:layout_height="wrap_content" <!-- Height determined by content -->
android:layout_width="match_parent" <!-- Fill entire width -->
android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>
inputType
phủ định ít nhất là lines
và minLines
các thuộc tính. Tôi đã inputType="phone"
và dòng thuộc tính không ảnh hưởng
IndexOutOfBoundsException
ngay khi bạn gõ một cái gì đó vìandroid:inputType="textMultiLine"
Bạn có thể thấy nó tốt hơn để sử dụng:
<EditText
...
android:inputType="textMultiLine"
/>
Điều này là do android:singleLine
bị phản đối.
singleLine
trong câu trả lời của họ (một thời gian dài trước đây). Về câu hỏi, đó là phần quan trọng nhất trong câu trả lời của họ.
IndexOutOfBoundsException
ngay khi bạn gõ một cái gì đó. Multiline bây giờ là mặc định.
Điều này làm việc cho tôi, thực sự 2 thuộc tính này rất quan trọng: inputType và lines . Ngoài ra, bạn có thể cần một thanh cuộn, đoạn mã dưới đây cho thấy cách tạo một thanh cuộn:
<EditText
android:id="@+id/addr_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top|left"
android:inputType="textEmailAddress|textMultiLine"
android:lines="20"
android:minLines="5"
android:scrollHorizontally="false"
android:scrollbars="vertical" />
Đây là cách tôi áp dụng đoạn mã dưới đây và nó hoạt động tốt. Hy vọng, điều này sẽ giúp được ai đó.
<EditText
android:id="@+id/EditText02"
android:gravity="top|left"
android:inputType="textMultiLine"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:lines="5"
android:scrollHorizontally="false"
/>
Chúc mừng! ...Cảm ơn.
Hãy thử điều này, thêm các dòng này vào chế độ xem văn bản chỉnh sửa của bạn, tôi sẽ thêm của tôi. chắc chắn rằng bạn hiểu nó
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"
<EditText
android:inputType="textMultiLine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText_newprom_description"
android:padding="10dp"
android:lines="5"
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:minLines="5"
android:gravity="top|left"
android:scrollbars="vertical"
android:layout_marginBottom="20dp"/>
và trên lớp java của bạn, hãy bấm vào listner để chỉnh sửa văn bản này như sau, tôi sẽ thêm tên của tôi, chane theo tên của bạn.
EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);
description.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
view.getParent().requestDisallowInterceptTouchEvent(true);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return false;
}
});
Cái này làm việc tốt cho tôi
EditText có thuộc tính SingleLine . Bạn có thể đặt trong XML hoặc bằng cách gọi setSingleLine (false); http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29
Tất cả những thứ này đều đẹp nhưng sẽ không hoạt động trong trường hợp bạn có edittext bên trong chế độ xem cuộn ở cấp trên :) Có lẽ ví dụ phổ biến nhất là chế độ xem "Cài đặt" có rất nhiều mục mà chúng vượt ra ngoài vùng hiển thị. Trong trường hợp này, bạn đặt tất cả chúng vào chế độ xem cuộn để có thể cuộn cài đặt. Trong trường hợp bạn cần văn bản chỉnh sửa có thể cuộn nhiều dòng trong cài đặt của mình, cuộn của nó sẽ không hoạt động.
<EditText
android:id="@id/editText" //id of editText
android:gravity="start" // Where to start Typing
android:inputType="textMultiLine" // multiline
android:imeOptions="actionDone" // Keyboard done button
android:minLines="5" // Min Line of editText
android:hint="@string/Enter Data" // Hint in editText
android:layout_width="match_parent" //width editText
android:layout_height="wrap_content" //height editText
/>
Để tắt số lượng dòng được gán trước đó trong chủ đề, hãy sử dụng thuộc tính xml: android:lines="@null"
Tôi đã học được điều này từ http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , mặc dù bản thân tôi không thích trang web này. Nếu bạn muốn multiline NHƯNG muốn giữ lại nút enter làm nút đăng bài, hãy đặt "cuộn theo chiều ngang" của listview thành false.
android:scrollHorizontally="false"
Nếu nó không hoạt động trong xml, thì nó hoạt động theo chương trình một cách kỳ lạ.
listView.setHorizontallyScrolling(false);
<EditText
android:hint="Address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textMultiLine|textNoSuggestions"
android:id="@+id/edittxtAddress"
android:layout_marginLeft="@dimen/textsize2"
android:textColor="@android:color/white"
android:scrollbars="vertical"
android:minLines="2"
android:textStyle="normal" />
và trong Hoạt động để xóa "\ n" là người dùng nhấn nextline
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
nếu ai đó đang sử dụng AppCompatEditText thì bạn cần đặt inputType = "textMultiLine" ở đây là mã bạn có thể sao chép
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/_8sdp"
android:id="@+id/etNote"
android:minLines="6"
android:singleLine="false"
android:lines="8"
android:scrollbars="vertical"
android:background="@drawable/rounded_border"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_25sdp"
android:layout_marginTop="32dp"
android:layout_marginEnd="@dimen/_25sdp"
android:autofillHints=""
android:gravity="start|top"
android:inputType="textMultiLine"
/>
cho nền
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/_5sdp"/>
<stroke android:width="1dp" android:color="#C8C8C8"/>
</shape>