จำกัด edittext ให้เป็นบรรทัดเดียว


312

เป็นไปได้ซ้ำ: android-singleline-true-not-working-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>

ฉันต้องการทำให้ด้านบนEditTextมีเพียงบรรทัดเดียวเท่านั้น แม้ว่าผู้ใช้กด "ป้อน" เคอร์เซอร์ไม่ควรลงไปที่บรรทัดที่สอง ใครช่วยฉันทำสิ่งนั้นได้บ้าง


60
การใช้งานandroid:singleLine=true
Praveenkumar

6
แทนที่หุ่นยนต์: เส้น = "1" android:singleLine=trueด้วย
Mohammed Azharuddin Shaikh

3
true ต้องอยู่ในเครื่องหมายคำพูด "true"
deepwinter

8
เมื่อเลิกใช้งาน singleLine คุณสามารถใช้ maxLines = 1 และ inputType = text
sunlover3

4
การใช้android:inputType="textVisiblePassword"จะช่วยแก้ปัญหา
Saad Mahmud

คำตอบ:


557

ใช้android:maxLines="1"และandroid:inputType="text"

คุณลืมแอตทริบิวต์android: maxLines และอ้างอิงสำหรับandroid: inputTypeด้วยตัวอย่างของคุณด้านล่างจะให้ผลลัพธ์นี้:

<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 ในปัจจุบัน Eclipse IDE ไม่มีคำแนะนำการเลิกใช้งานจะแสดงและหุ่นยนต์: maxLines ไม่ได้ จำกัด การป้อนข้อมูลไปยังหนึ่งบรรทัด
MJN

10
ใช้ singleline = true
Dakshesh Khatri

2
@Praveen: คุณกรุณาให้การอ้างอิงที่มันบอกว่าAndroid: singleLineจะเลิก? ฉันไม่เห็นที่นั่นสำหรับ API 23 ฉันไม่เห็นมันกล่าวถึงในเอกสารประกอบและฉันไม่ได้รับคำเตือนใด ๆ เมื่อฉันใช้กับ23.0.1SDK
Shobhit Puri

5
เลิกใช้ตั้งแต่ระดับ API 3. ดู: developer.android.com/reference/android/R.attr.html#singleLine
หลุยส์

3
ถ้าคุณใช้ android เท่านั้น: maxLines = "1" จะไม่ทำงานดังนั้นคุณต้องใช้ทั้ง android: inputType = "text" และ maxlines -1 จากนั้นมันจะทำงานได้อย่างสมบูรณ์
Hanuman

193

การใช้android:singleLine="true"ถูกเลิกใช้

เพียงเพิ่มประเภทอินพุตของคุณและตั้งค่าสูงสุดเป็น 1 และทุกอย่างจะทำงานได้ดี

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

80
หากคุณไม่ได้ระบุประเภทอินพุตมันจะไม่ทำงานเป็นสิ่งที่ฉันค้นพบ
Micro

10
คุณถูก. inputType = "textMultiLine" จะยังคงให้ multiline แม้ว่าคุณจะตั้งค่า max line เป็น 1
ralphgabb

2
โปรดทราบว่าสำหรับandroid:inputType="number"บรรทัดสูงสุด 1 บรรทัดแล้ว
Micer

สิ่งนี้ใช้ไม่ได้หากมุมมองข้อความของฉันยาวมากและฉันต้องการให้หลายบรรทัด แต่ไม่ใช่กับอักขระขึ้นบรรทัดใหม่
htafoya

@htafoya ข้อมูลโค้ดนี้ใช้สำหรับการแก้ไขข้อความบรรทัดเดียว อย่างไรก็ตามคุณสามารถเริ่มคำถามใหม่ได้ที่นี่ที่ SO
ralphgabb

54

android:singleLineเลิกใช้แล้ว จากเอกสาร :

ค่าคงนี้ถูกคัดค้านใน API ระดับ 3

คุณลักษณะนี้เลิกใช้แล้ว ใช้maxLinesแทนการเปลี่ยนเค้าโครงของข้อความคงที่และใช้textMultiLineแฟล็กในแอ็ตทริบิวต์ inputType แทนการดูข้อความที่แก้ไขได้ (หากมีการจัดหาทั้ง singleLine และ inputType แฟล็ก inputType จะแทนที่ค่าของ singleLine)

ดังนั้นคุณสามารถตั้งค่าandroid:inputType="textEmailSubject"หรือค่าอื่น ๆ ที่ตรงกับเนื้อหาของฟิลด์


29
android:inputType="text"ถ้าคุณอยากจะลองฟิลด์ข้อความบรรทัดที่เรียบง่ายใช้งาน
PhoneixS

ขอบคุณ @Mr Bungle, ข้อความ MultiLine ทำงานให้ฉัน!
user1510006

18

คุณต้องเพิ่มบรรทัดนี้ใน EditText ของคุณใน xml:

android:maxLines="1"

3
ดังคำตอบอื่น ๆ ที่บันทึกไว้ - สิ่งนี้ได้ถูกคัดค้านเพื่อประโยชน์maxLinesและการinputTypeรวมกัน
Janis Peisenieks

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

เพิ่มโค้ดด้านบนเพื่อให้มีบรรทัดเดียวในแท็ก EditText ในเลย์เอาต์ของคุณ

android:singleLine="true" is deprecated

อย่างต่อเนื่องนี้ถูกเลิกใช้ในระดับ API 3

คุณลักษณะนี้เลิกใช้แล้ว ใช้ maxLines แทนเพื่อเปลี่ยนเลย์เอาต์ของข้อความคงที่และใช้แฟล็ก textMultiLine ในแอ็ตทริบิวต์ inputType แทนสำหรับมุมมองข้อความที่แก้ไขได้ (ถ้ามีการจัดหาทั้ง singleLine และ inputType แฟล็ก inputType จะแทนที่ค่าของ singleLine)


13

android:singleLineแอตทริบิวต์ตอนนี้เลิกใช้แล้ว โปรดเพิ่มแอททริบิวเหล่านี้ให้กับคุณEditTextเพื่อEditTextให้เป็นบรรทัดเดียว

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

11

ฉันได้ทำสิ่งนี้ในอดีตด้วยandroid:singleLine="true"แล้วเพิ่มฟังสำหรับคีย์ "ป้อน":

((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

สิ่งนี้จะทำงานกับ EditText:

android:inputType="text"

จากนั้นฉันจะตั้งค่าความยาวสูงสุดสำหรับข้อความอินพุต:

android:maxLines="1"

นี่คือ 2 ที่จำเป็นตอนนี้



5

ทุกคนแสดงวิธี XML ยกเว้นหนึ่งคนแสดงวิธีเรียกใช้ setMaxLines ของ EditText อย่างไรก็ตามเมื่อฉันทำอย่างนั้นมันไม่ทำงาน สิ่งหนึ่งที่ทำงานได้สำหรับฉันคือการตั้งค่าประเภทอินพุต

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

อนุญาตให้ใช้ตัวอักษร AZ, az, 0-9 และอักขระพิเศษได้ แต่ไม่อนุญาตให้กด Enter เมื่อคุณกด Enter มันจะไปยังองค์ประกอบ GUI ถัดไปหากมีในแอปพลิเคชันของคุณ

คุณอาจต้องการตั้งค่าจำนวนอักขระสูงสุดที่สามารถใส่ลงใน EditText นั้นมิฉะนั้นมันจะดันสิ่งที่อยู่ทางด้านขวาออกจากหน้าจอหรือเพียงแค่เริ่มลากหน้าจอออกไป คุณสามารถทำสิ่งนี้ได้:

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

ชุดอักขระสูงสุดเป็น 8 ใน EditText นั้น หวังว่าทั้งหมดนี้จะช่วยคุณ





1

@Aleks G OnKeyListener () ทำงานได้ดีจริงๆ แต่ฉันวิ่งจาก MainActivity และต้องแก้ไขเล็กน้อย:

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

ฉันหวังว่านี่จะช่วยให้ทุกคนพยายามทำเช่นเดียวกัน


1

ในการที่จะ จำกัด คุณเพียงแค่ต้องตั้งค่าตัวเลือกบรรทัดเดียวเป็น "true"

android:singleLine="true"

3
เลิกใช้งานครั้งเดียว!
Jamshaid Kamran

1

นอกจากนี้ยังเป็นสิ่งสำคัญที่จะให้ความสนใจถ้าคุณสมบัติหุ่นยนต์: inputType เป็นtextMultiLine ถ้าเป็นเช่นนั้นคุณสมบัติของ android: singleLine, android: imeOptions, android: ellipsize และ android maxLines จะถูกละเว้นและ EditText ของคุณจะยอมรับ MultiLines อยู่ดี



1

ตามที่ได้ android:singleLine="true"ถูกคิดค่าเสื่อมราคาแล้วดังนั้นใช้

หุ่นยนต์: maxLines = "1"

ใช้ maxLines แทนเพื่อเปลี่ยนเลย์เอาต์ของข้อความคงที่และใช้แฟล็ก textMultiLine ในแอ็ตทริบิวต์ inputType แทนสำหรับมุมมองข้อความที่แก้ไขได้ (ถ้ามีการจัดหาทั้ง singleLine และ inputType แฟล็ก inputType จะแทนที่ค่าของ singleLine)


1

ใช้รหัสด้านล่างแทนรหัสของคุณ

<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

คุณต้องเพิ่มบรรทัดนี้ใน EditText ของคุณ

android:maxLines="1"

และอีกอย่างอย่าลืมตั้งค่า android:inputType(สิ่งที่คุณต้องการข้อความโทรศัพท์ .. แต่คุณต้องตั้งค่า)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.