开发者

Android Edittext question, replace keypad enter with done

开发者 https://www.devze.com 2023-01-04 14:00 出处:网络
I\'m defining an edit text like so... <EditText android:id=\"@+id/user\" android:layout_width=\"200px\"

I'm defining an edit text like so...

<EditText
android:id="@+id/user"
android:layout_width="200px"
android:layout_height="wrap_content"
android:text="Username"
android:textSize="18sp"
android:gravity="center"
android:layout_x="64px"
android:layout_y="140px"
>

I'd like to replace the "enter" button that appears on the keypad automatically, with a done button that would just close the keypad when the user hits it. I've seen this done on a couple of apps (e.g the Nexus One twitter app) and would like to implement something similar. does anyone know how?

Also is it possible to get the text that appears by default to auto erase when the user click to edit the 开发者_运维技巧edittext box? Thanks,


Simple solution: add android:singleLine="true" for the EditText. This will replace the enter with Next (for all edittexts except the last one) and Done (for the last one).


Just add in the EditText XML : android:imeOptions="actionDone"


Here is an updated answer:

android:maxLines="1"

The accepted answer of android:singleLine="true" has been deprecated.


android:imeOptions="actionNext"

It replaces the name of the enter key with "Next" in the virtual keyboard and by clicking on it - focus jumps to the next field

In your layout, you would do things like this

<EditText
    ...
    android:text="Field 1"
    android:imeOptions="actionNext" />
<EditText
    ...
    android:text="Field 2"
    android:imeOptions="actionNext" />

And in Java

TextView field2 = (TextView) field1.focusSearch(View.FOCUS_RIGHT);
field2.requestFocus();

It's up to you to decide which field will request focus next.


About your other question, getting the text to auto-erase, you should include it in android:hint instead of android:text.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号