Đặt EditText imeOptions thành actionNext không có hiệu lực


94

Tôi có một tệp bố cục xml khá phức tạp (không thực sự). Một trong những dạng xem là một LinearLayout ( v1) với hai con: một EditText ( v2) và một LinearLayout ( v3) khác. Lần lượt LinearLayout con có một EditText ( v4) và một ImageView ( v5).

Đối với EditText v2, tôi có imeOptions là

android:imeOptions="actionNext"

Nhưng khi tôi chạy ứng dụng, bàn phím returnkhông kiểm tra nextvà tôi muốn nó thay đổi thành next. Làm sao để sửa lỗi này?

Ngoài ra, khi người dùng nhấp vào tiếp theo, tôi muốn tiêu điểm chuyển đến EditText v4. Tôi làm tôi làm điều này?

Đối với những người thực sự cần xem một số mã:

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

Tôi không chắc điều này sẽ hoạt động đối với các chế độ xem không phải là anh chị em, nhưng bạn có thể thử thêm android:nextFocusDown="@id/edit_text_v4"(cũng có thể thử android:nextFocusForwardhoặc một số thuộc tính nextFocus khác).
Karakuri

@Karakuri nó không hoạt động. Lưu ý rằng nút tiếp theo hoàn toàn không hiển thị. Nút vẫn là nút quay lại.
Katedral Pillon

1
@KatedralPillon Bạn đã giải quyết được chưa? Nếu có thì bạn có thể đăng giải pháp của bạn ở đây không? Tôi đang phải đối mặt với vấn đề tương tự.
h4ck3d

Câu trả lời:


189

Chỉ cần thêm android:maxLines="1" & android:inputType="text"vào EditText của bạn. Nó sẽ hoạt động !! :)


3
Hãy thử đặt chiều cao của EditText của bạn là wrap_content.
Surendra Kumar

4
Không hoạt động cũng với wrap_content . Đặt một inputTypegiải quyết vấn đề trong trường hợp của tôi.
manfcas

3
sử dụng android:maxLines="1"thay vì android:singleLine="true"như bị phản đối của mình
blueware

9
Mặc dù, `android: singleLine =" true "` không được dùng nữa nhưng một số cách thực hiện thủ thuật, trong khi maxLine="1"không hoạt động.
Paresh P.

2
Bạn phải đặt inputType = "text" để imeoptions hoạt động.
Duran Jayson

49

singleLinekhông được dùng nữa. Thêm một kiểu đầu vào (ví dụ android:inputType="text":) cũng làm việc cho tôi.

Sử dụng android:maxLines="1"như singleLinekhông được dùng nữa


1
Đây là câu trả lời chính xác!! imeOptions và maxLines sẽ không có hiệu lực nếu không có inputType
Christopher Smit.

43

android:singleLineđã không được dùng nữa, tốt hơn là nên kết hợp android:maxLines="1"với android:inputType="text". Đây sẽ là mã:

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

21

Tất cả các câu trả lời được đưa ra ở đây đều rất hữu ích, nhưng tôi vẫn đang đấu tranh để hiển thị "Tiếp theo" của bàn phím.

Hóa ra là khi bạn sử dụng android:digitsthuộc tính của Android trong XML của mình, nó ngăn không cho hoạt android:imeOptions="actionNext"động như mong đợi.

Câu trả lời thực sự là sử dụng không dùng nữa android:singleLine="True". Điều này dường như buộc Tùy chọn IME phải được tôn trọng.

Mã cũ, không hoạt động

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

Mã làm việc

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

Tôi không phải là người thích sử dụng thuộc tính không được dùng nữa, nhưng hiện tại nó có vẻ nhận được kết quả mong muốn.


cảm ơn không dùng nữa nhưng nó đang hoạt động !! bất kỳ vấn đề sẽ xảy ra trong tương lai?
Arbaz.in

11

dòng đơn không được dùng nữa nên bạn thêm mã bên dưới, tôi nghĩ rằng inputType phải.

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

10

Cuối cùng, tôi đã có giải pháp chắc chắn cho vấn đề này Chỉ cần thêm 3 dòng này vào văn bản chỉnh sửa của bạn và nó sẽ hoạt động tốt

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

Ở đây bạn có thể thêm maxLines theo yêu cầu của bạn. Không sử dụng singleLine vì nó hiện không được dùng nữa. Chúc may mắn!


8
android:inputType="text"

Bạn phải chỉ định một inputType để imeOptions hoạt động.


điều gì sẽ xảy ra nếu mục cuối cùng là mật khẩu trong biểu mẫu?
silentsudo

5

Chìa khóa ở đây là đặt loại đầu vào và thuộc tính imeOptions

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

5

Chỉ điều này làm việc cho tôi.

Thay đổi nó:

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

trên đó:

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

inputType = "text" đã làm điều đó cho tôi.
Hackmodford

giống như inputeType = "text" làm việc cho tôi
wesley franks

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

những gì không actionUnspecifiedthực hiện chính xác.
Shubham Naik


4

Ba dòng này là đủ.

android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
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.