hạn chế edittext thành một dòng


312

có thể trùng lặp: android-singleline-true-not-work-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

Tôi muốn làm ở trên EditTextchỉ có một dòng duy nhất. Ngay cả khi người dùng nhấn "enter", con trỏ không được xuống dòng thứ hai. Ai có thể giúp tôi làm điều đó?


60
sử dụngandroid:singleLine=true
Praveenkumar

6
thay thế android: lines = "1" bằng android:singleLine=true.
Mohammed Azharuddin Shaikh

3
true phải nằm trong trích dẫn "true"
deepwinter

8
Khi singleLine trở nên không dùng nữa, bạn có thể sử dụng maxLines = 1 và inputType = text.
sunlover3

4
Sử dụng android:inputType="textVisiblePassword"sẽ giải quyết vấn đề
Saad Mahmud

Câu trả lời:


557

Sử dụng android:maxLines="1"android:inputType="text"

Bạn đã quên thuộc tính android: maxLines . Và tham khảo cho android: inputType Với ví dụ của bạn, bên dưới sẽ cho kết quả này:

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

17
@ Lukasz'Severiaan'Grela trong IDE Eclipse hiện tại, không có gợi ý phản đối nào được hiển thị và android: maxLines không giới hạn đầu vào trong một dòng
mjn

10
sử dụng singleline = true
Dakshesh Khatri

2
@Praveen: Bạn có thể vui lòng cung cấp tài liệu tham khảo trong đó nói android: singleLine không được dùng nữa không? Tôi không thể thấy nó ở đó cho API 23. Tôi không thấy nó được đề cập trong tài liệu và tôi cũng không nhận được bất kỳ cảnh báo nào khi tôi sử dụng nó với 23.0.1SDK
Shobhit Puri

5
Không dùng nữa kể từ cấp API 3. Xem: developer.android.com/reference/android/R.attr.html#singleLine
Luis

3
Nếu bạn chỉ sử dụng android: maxLines = "1" sẽ không hoạt động. Vì vậy, bạn cần sử dụng cả android: inputType = "text" và maxlines -1. Sau đó, nó sẽ hoạt động hoàn hảo
Hanuman

193

Sử dụng android:singleLine="true" bị phản đối.

Chỉ cần thêm loại đầu vào của bạn và đặt maxline thành 1 và mọi thứ sẽ hoạt động tốt

android:inputType="text"
android:maxLines="1"

80
Nếu bạn không chỉ định inputType, nó sẽ không hoạt động là những gì tôi tìm ra.
Micro

10
quyền của bạn. inputType = "textMultiLine" vẫn sẽ cung cấp cho bạn nhiều dòng ngay cả khi bạn đặt dòng tối đa thành 1.
ralphgabb

2
Lưu ý rằng đối với android:inputType="number"đã có tối đa 1 dòng.
Micer

Điều này không hoạt động nếu textview của tôi rất dài và tôi muốn nó đa dòng, nhưng không phải với các ký tự dòng mới.
htafoya

@htafoya đoạn mã này hoạt động để thực hiện chỉnh sửa văn bản một dòng. Tuy nhiên, bạn có thể bắt đầu một câu hỏi mới tại SO.
ralphgabb

54

android:singleLinebây giờ không được dùng nữa Từ tài liệu :

Hằng số này không được dùng trong API cấp 3.

Thuộc tính này không được dùng nữa. maxLinesThay vào đó, hãy sử dụng để thay đổi bố cục của văn bản tĩnh và sử dụng textMultiLinecờ trong thuộc tính inputType thay cho chế độ xem văn bản có thể chỉnh sửa (nếu cả haiLineLine và inputType được cung cấp, các cờ inputType sẽ ghi đè giá trị của singleLine).

Vì vậy, bạn chỉ có thể đặt android:inputType="textEmailSubject"hoặc bất kỳ giá trị nào phù hợp với nội dung của trường.


29
Nếu bạn muốn một trường văn bản dòng đơn giản, sử dụng android:inputType="text".
PhoneixS

Cảm ơn bạn @Mr. Bungle, textMultiLine làm việc cho tôi!
dùng1510006

18

Bạn phải thêm dòng này trong EditText của bạn trong xml:

android:maxLines="1"

3
Như các câu trả lời khác đã lưu ý - điều này đã không được ủng hộ maxLinesinputTypekết hợp
Janis Peisenieks

16
android:maxLines="1"
android:inputType="text"

Thêm mã ở trên để có một dòng duy nhất trong thẻ EditText trong bố cục của bạn.

android:singleLine="true" is deprecated

Hằng số này không được dùng trong API cấp 3 .

Thuộc tính này không được dùng nữa. Thay vào đó, hãy sử dụng maxLines để thay đổi bố cục của văn bản tĩnh và sử dụng cờ textMultiLine trong thuộc tính inputType thay cho chế độ xem văn bản có thể chỉnh sửa (nếu cả haiLine và inputType được cung cấp, các cờ inputType sẽ ghi đè giá trị của SingleLine).


13

Bây giờ android:singleLinethuộc tính bị phản đối. Vui lòng thêm các thuộc tính này vào EditTextmột EditTextdòng duy nhất.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"

11

Tôi đã làm điều này trong quá khứ với android:singleLine="true"và sau đó thêm một trình lắng nghe cho phím "enter":

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

11

Điều này sẽ làm việc cho EditText:

android:inputType="text"

Sau đó, tôi sẽ đặt độ dài tối đa cho văn bản đầu vào:

android:maxLines="1"

Đó là 2 cái cần thiết bây giờ.



5

Mọi người đều thể hiện cách XML, ngoại trừ một người đã hiển thị gọi phương thức setMaxLines của EditText. Tuy nhiên, khi tôi làm điều đó, nó đã không hoạt động. Một điều làm việc cho tôi là thiết lập kiểu đầu vào.

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

Điều này cho phép AZ, az, 0-9 và các ký tự đặc biệt, nhưng không cho phép nhấn enter. Khi bạn nhấn enter, nó sẽ chuyển đến thành phần GUI tiếp theo, nếu có trong ứng dụng của bạn.

Bạn cũng có thể muốn đặt số lượng ký tự tối đa có thể được đưa vào EditText đó, nếu không, nó sẽ đẩy bất cứ thứ gì sang bên phải màn hình hoặc chỉ bắt đầu thoát khỏi màn hình. Bạn có thể làm điều này như thế này:

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

Điều này đặt các ký tự tối đa thành 8 trong EditText đó. Hy vọng tất cả điều này sẽ giúp bạn.





1

@Aleks G OnKeyListener () hoạt động rất tốt, nhưng tôi đã chạy nó từ MainActivity và do đó phải sửa đổi nó một chút:

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

Tôi hy vọng điều này sẽ giúp bất cứ ai cố gắng làm điều tương tự.



1

Ngoài ra, điều quan trọng cần chú ý nếu thuộc tính android: inputType là textMultiLine . Nếu vậy, các thuộc tính android: singleLine, android: imeOptions, android: ellipsize và android maxLines sẽ bị bỏ qua và EditText của bạn sẽ chấp nhận MultiLines.



1

Như android:singleLine="true"bây giờ đã khấu hao để sử dụng

android: maxLines = "1"

Thay vào đó, hãy sử dụng maxLines để thay đổi bố cục của văn bản tĩnh và sử dụng cờ textMultiLine trong thuộc tính inputType để xem các văn bản có thể chỉnh sửa (nếu cả haiLine và inputType được cung cấp, các cờ inputType sẽ ghi đè lên giá trị của SingleLine).


1

Sử dụng mã dưới đây thay vì mã của bạn

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>

0

trong tệp XML thêm thuộc tính này trong Chỉnh sửa văn bản

 android:maxLines="1"


0

Bạn phải thêm dòng này trong EditText của bạn

android:maxLines="1"

và một điều nữa, đừng quên thiết lập android:inputType(bất cứ điều gì bạn muốn, văn bản, điện thoại .., nhưng bạn phải đặt nó)


0

Tại tệp XML. Chỉ cần thêm

android: maxLines = "1"

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.