Cho phép nhiều dòng trong chế độ xem Chỉnh sửa trong Android?


Câu trả lời:


1176

Theo mặc định, tất cả các EditTexttiệ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 -->
/>

6
Có cách nào để inputType được đặt thành textMultiLine và imeOptions thành actionSend không? Tôi thấy một phím Enter trên bàn phím S4 thay vì gửi khi tôi đặt inputType thành textMultiLine và imeOptions thành actionSend.
dùng484691

1
Để biết "textMultiLine và imeOptions", hãy xem stackoverflow.com/questions/5014219/ khăn
TOMKA

2
Một điều cần lưu ý, thêm một inputTypephủ định ít nhất là linesminLinescác thuộc tính. Tôi đã inputType="phone"và dòng thuộc tính không ảnh hưởng
ono

2
Không sử dụng cái này. Gây ra IndexOutOfBoundsExceptionngay khi bạn gõ một cái gì đó vìandroid:inputType="textMultiLine"
Chisko

Nếu sử dụng AppCompactTextView cần dòng này android: inputType = "textMultiLine"
sourav pandit

260

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:singleLinebị phản đối.


Câu trả lời của Sharduls chắc chắn sẽ hoạt động trên Apis hiện đại. Vì họ đã loại bỏ phần không được chấp nhận singleLinetrong 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ọ.
Knossos

Không sử dụng cái này. Gây ra IndexOutOfBoundsExceptionngay khi bạn gõ một cái gì đó. Multiline bây giờ là mặc định.
Chisko

@Chisko Một thuộc tính XML sẽ không gây ra IndexOutOfBoundException. Tôi không thể nhớ khi inputType mặc định thay đổi (thậm chí đã làm như vậy?), Nhưng có lẽ tốt nhất là giữ điều này vì lý do tương thích ngược.
Knossos

1
@Knossos tốt, lạ như đối với bạn nó là dành cho tôi. Tôi đã sao chép mã theo nghĩa đen và bị lỗi mỗi lần với mọi sự kết hợp có thể của một vài tham số cho đến khi tôi xóa mã đó. Đi hình.
Chisko

42

Đ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: inputTypelines . 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" />

20

Đâ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.


11

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


Cảm ơn bạn! Đây là cách tôi thực hiện chỉnh sửa văn bản có thể cuộn trong chế độ xem có thể cuộn.
Esdras Lopez


5

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.


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

4

Để 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"


4
android:inputType="textMultiLine"

Dòng mã này làm việc cho tôi. Thêm mã này bạn edittext trong tệp xml của bạn.


3

Chỉ cần thêm điều này android:inputType="textMultiLine" trong tệp XML trên trường có liên quan.


1

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);


1
<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"," ");

1

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>

0

Một điều gọn gàng để làm là sử dụng android:minHeightcùng với android:layout_height="wrap_content". Bằng cách này, bạn có thể đặt kích thước của bản chỉnh sửa khi nó trống và khi người dùng nhập nội dung, nó sẽ kéo dài tùy theo số lượng người dùng nhập, bao gồm nhiều dòng.

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.