การตั้งค่า EditText imeOptions เป็น actionNext ไม่มีผล


95

ฉันมีไฟล์เลย์เอาต์ xml ที่ค่อนข้างซับซ้อน (ไม่ใช่จริงๆ) หนึ่งในมุมมองคือ LinearLayout ( v1) ที่มีลูกสองคน: EditText ( v2) และ LinearLayout ( v3) อีกอัน LinearLayout ลูกนั้นมี EditText ( v4) และ ImageView ( v5)

สำหรับ EditText v2 ฉันมี imeOptions เป็น

android:imeOptions="actionNext"

แต่เมื่อผมใช้ app แป้นพิมพ์ที่returnไม่ได้ตรวจสอบไปและฉันต้องการที่จะเปลี่ยนไปnext nextฉันจะแก้ไขปัญหานี้ได้อย่างไร?

นอกจากนี้เมื่อผู้ใช้คลิกถัดไปฉันต้องการโฟกัสไปที่ EditText v4 ฉันจะทำแบบนี้?

สำหรับผู้ที่ต้องการดูรหัสจริงๆ:

<LinearLayout
        android:id="@+id/do_txt_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/col6"
        android:orientation="vertical"
        android:visibility="gone" >

        <EditText
            android:id="@+id/gm_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/coldo_text"
            android:hint="@string/enter_title"
            android:maxLines="1"
            android:imeOptions="actionNext"
            android:padding="5dp"
            android:textColor="pigc7"
            android:textSize="ads2" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="horizontal" >

            <EditText
                android:id="@+id/rev_text"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/coldo_text"
                android:hint="@string/enter_msg"
                android:maxLines="2"
                android:padding="5dp"
                android:textColor="pigc7"
                android:textSize="ads2" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:background="@drawable/colbtn_r”
                android:clickable="true"
                android:onClick=“clickAct”
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:src="@drawable/abcat” />
        </LinearLayout>
    </LinearLayout>

ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้กับมุมมองที่ไม่ใช่พี่น้อง แต่คุณสามารถลองเพิ่มandroid:nextFocusDown="@id/edit_text_v4"(อาจจะลองandroid:nextFocusForwardหรือแอตทริบิวต์ nextFocus อื่น ๆ )
Karakuri

@ Karakuri ไม่ได้ผล สังเกตว่าปุ่มถัดไปไม่ปรากฏขึ้นเลย ปุ่มยังคงเป็นปุ่มย้อนกลับ
Katedral Pillon

1
@KatedralPillon คุณจัดการเพื่อแก้ปัญหาได้หรือไม่? ถ้าใช่คุณสามารถโพสต์วิธีแก้ปัญหาของคุณที่นี่ได้ไหม ฉันกำลังเผชิญกับปัญหาเดียวกัน
h4ck3d

คำตอบ:


193

เพียงเพิ่มandroid:maxLines="1" & android:inputType="text"ใน EditText ของคุณ มันจะทำงาน!! :)


3
ลองตั้งค่าความสูงของ EditText เป็น wrap_content
Surendra Kumar

4
wrap_content ไม่ได้ทำงานด้วย การตั้งค่าการinputTypeแก้ไขปัญหาในกรณีของฉัน
manfcas

3
ใช้android:maxLines="1"แทนandroid:singleLine="true"การเลิกใช้
blueware

9
แม้ว่า `android: singleLine =" true "` จะเลิกใช้งานแล้ว แต่กลเม็ดบางวิธีก็ใช้งานmaxLine="1"ไม่ได้
Paresh P.

2
คุณต้องตั้งค่า inputType = "text" เพื่อให้ imeoptions ทำงาน
Duran Jayson

49

singleLineเลิกใช้แล้ว การเพิ่มประเภทอินพุต (เช่น :) android:inputType="text"ก็ใช้ได้ผลกับฉันเช่นกัน

ใช้android:maxLines="1"ตามที่singleLineเลิกใช้แล้ว


1
นี่คือคำตอบที่ถูกต้อง !! imeOptions และ maxLines จะไม่มีผลหากไม่มี inputType
Christopher Smit

43

android:singleLineได้เลิกมันจะดีกว่าที่จะรวมกับandroid:maxLines="1" android:inputType="text"นี่จะเป็นรหัส:

<EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:maxLines="1"
        android:inputType="text"
        />

23

คำตอบที่ได้รับทั้งหมดนี้เป็นประโยชน์มาก แต่ฉันยังคงดิ้นรนเพื่อให้ "ถัดไป" ของแป้นพิมพ์แสดง

ปรากฎว่าเมื่อคุณใช้android:digitsแอตทริบิวต์ของ Android ใน XML ของคุณจะป้องกันไม่ให้android:imeOptions="actionNext"ทำงานตามที่คาดไว้

คำตอบคือการเลิกใช้งานandroid:singleLine="True"จริง ดูเหมือนว่าจะบังคับให้ใช้ IME Option

รหัสเก่าที่ไม่ทำงาน

        <android.support.design.widget.TextInputEditText
            android:id="@+id/first_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
            android:ellipsize="end"
            android:hint="@string/first_name"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:maxLength="35"
            android:maxLines="1" />

รหัสการทำงาน

        <android.support.design.widget.TextInputEditText
            android:id="@+id/first_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
            android:ellipsize="end"
            android:hint="@string/first_name"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:maxLength="35"
            android:maxLines="1"
            android:singleLine="true" />

ฉันไม่ใช่แฟนของการใช้แอตทริบิวต์ที่เลิกใช้งาน แต่ตอนนี้ดูเหมือนว่าจะได้ผลลัพธ์ที่ต้องการ


ขอบคุณที่เลิกใช้งาน แต่มันใช้งานได้ !! ปัญหาใด ๆ ที่จะเกิดขึ้นในอนาคต?
Arbaz ใน

12

บรรทัดเดียวเลิกใช้แล้วดังนั้นคุณจึงเพิ่มโค้ดด้านล่างฉันคิดว่าต้องใส่ inputType

        <EditText 
            android:inputType="text"
            android:maxLines="1"
            android:imeOptions="actionNext" />

11

ในที่สุดฉันก็มีทางออกที่แน่นอนสำหรับปัญหานี้เพียงแค่เพิ่ม3 บรรทัดนี้ในข้อความแก้ไขของคุณและมันจะใช้งานได้ดี

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

ที่นี่คุณสามารถเพิ่มmaxLines ได้ตามความต้องการของคุณ อย่าใช้singleLineเนื่องจากเลิกใช้งานแล้ว โชคดี!


8
android:inputType="text"

คุณต้องระบุ inputType เพื่อให้ imeOptions ทำงานได้


จะเกิดอะไรขึ้นถ้ารายการสุดท้ายเป็นรหัสผ่านในรูปแบบ?
silentsudo

6

สามบรรทัดนี้ก็เพียงพอแล้ว

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"

5

คีย์ในที่นี้คือการตั้งค่าประเภทอินพุตและแอ็ตทริบิวต์ imeOptions

<EditText 
   android:inputType="number"
   android:maxLines="1"
   android:imeOptions="actionSearch" />

5

แค่นี้ก็ใช้ได้ผลสำหรับฉัน

เปลี่ยนมัน:

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

ที่:

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"

inputType = "text" ทำเพื่อฉัน
Hackmodford


4
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/auth_register_re_password"
    android:hint="Enter Password Again"
    android:imeActionLabel="login"
    android:gravity="center"
    android:imeOptions="actionUnspecified"
    android:inputType="textPassword"
    android:maxLines="1"/>

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