Reputation: 14864
I have a fairly complex (not really) xml layout file. One of the views is a LinearLayout (v1
) with two children: an EditText(v2
) and another LinearLayout(v3
). The child LinearLayout in turn has an EditText(v4
) and an ImageView(v5
).
For EditText v2 I have imeOptions as
android:imeOptions="actionNext"
But when I run the app, the keyboard's return
does not check to next
and I want it to change to next
. How do I fix this problem?
Also, when user clicks next, I want focus to go to EditText v4. I do I do this?
For those who really need to see some code:
<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>
Upvotes: 106
Views: 61000
Reputation: 11
Observation that i saw for this: When you call implicit keyboard for a particular input, the android checks whether keyboard was called for same input box previously or not.
If called for same input box just show the previous ime option for that input box or else check the ime option that is currently set and use it.
There is some kind of caching which is creating the problem.
Upvotes: 0
Reputation: 1
Add this following lines to in your EditText.
<Edittext
android:layout_height = "match_parent"
android:layout_widht = "match_parent"
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionSearch"
android:imeActionLabel="Search"
android:hint = "Search Here" />
Upvotes: 0
Reputation: 6723
These three lines are enough.
android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Upvotes: 10
Reputation: 14918
<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"/>
Upvotes: 4
Reputation: 1493
Only this worked for me.
Change it:
android:maxLines="1"
android:inputType="text"
android:imeOptions="actionNext"
on that:
android:singleLine="true"
android:inputType="text"
android:imeOptions="actionNext"
Upvotes: 6
Reputation: 2807
Just add android:maxLines="1" & android:inputType="text"
to your EditText. It will work!! :)
Upvotes: 227
Reputation: 1663
The answers given here were all very helpful, but I was still struggling to get my keyboard's "Next" to show.
Turns out that when you use Android's android:digits
attribute in your XML, it prevents the android:imeOptions="actionNext"
from working as expected.
The answer is actually to use the deprecated android:singleLine="True"
. This seems to force the IME Option to be respected.
Old, Non-Working Code
<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" />
Working Code
<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" />
I'm not a fan of using a deprecated attribute, but for now it seems to get the desired result.
Upvotes: 31
Reputation: 2500
Finally i have got sure solution for this issue Just add these 3 lines in your edit text and it will be working fine
android:maxLines="1"
android:inputType="text"
android:imeOptions="actionDone"
Here you can add maxLines according to your requirement. Do not use singleLine as it is deprecated now. Good luck!
Upvotes: 11
Reputation: 131
Key here is to set input type and imeOptions attributes
<EditText
android:inputType="number"
android:maxLines="1"
android:imeOptions="actionSearch" />
Upvotes: 5
Reputation: 969
single line deprecated so you add below code I think inputType must.
<EditText
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionNext" />
Upvotes: 13
Reputation: 511
android:inputType="text"
You have to specify an inputType in order for imeOptions to function.
Upvotes: 8
Reputation: 5791
android:singleLine
has been deprecated, it is better to combine android:maxLines="1"
with android:inputType="text"
. This would be the code:
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="text"
/>
Upvotes: 43
Reputation: 3843
singleLine
is deprecated. Adding an input type (eg: android:inputType="text"
) also worked for me.
Use android:maxLines="1"
as singleLine
is deprecated
Upvotes: 52