1,在android:imeOptions属性中指定要自定义的行为.
系统中有很多行为,如:搜索,完成,下一步等:actionSend,actionGo,actionNext等。下面EditText名字虽然是search,但是行为可定义成send等。
1 <EditText 2 android:id="@+id/search" 3 android:layout_width="fill_parent" 4 android:layout_height="wrap_content" 5 android:hint="@string/search_hint" 6 android:inputType="text" 7 android:imeOptions="actionSend" />
如果没有指定与actionSend对应的代码,那么系统来处理,如果在这个id为search的EditText后面有其它可以得到焦点的控件,则交给它,没有则则行为与actionNone相同。
2,在代码中:
1 EditText editText = (EditText) findViewById(R.id.search); 2 editText.setOnEditorActionListener(new OnEditorActionListener() { 3 @Override 4 public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 5 boolean handled = false; 6 if (actionId == EditorInfo.IME_ACTION_SEND) { 7 sendMessage(); 8 handled = true; 9 } 10 return handled; 11 } 12 });
3,可以控制回车键是否显示在输入框内。
当输入框足够宽时(比如横屏时),会在输入框内显示一个回车键对应的按钮。如下图中的"Launch":
可以定义这个按钮的文本:
1 <EditText 2 android:id="@+id/launch_codes" 3 android:layout_width="fill_parent" 4 android:layout_height="wrap_content" 5 android:hint="@string/enter_launch_codes" 6 android:inputType="number" 7 android:imeActionLabel="按钮显示的文本" />
也可以不显示这个按钮:加上 flagNoExtractUi 标志位就可。
1 <EditText 2 android:id="@+id/search" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:hint="actionSend" 6 android:imeActionLabel="send" 7 android:inputType="text" 8 android:imeOptions="actionSend|flagNoExtractUi" />