2020-05-30 08:42:26 +08:00
|
|
|
|
# 如何使用软键盘上的 action 按钮
|
|
|
|
|
|
|
|
|
|
android/iphone 等手机的软键盘上有一个特殊的键,这个键的功能和文字与当前的编辑密切相关,在不同的编辑器上,可能显示“发送”、“下一个”、“回车”,“关闭”,“清除”等。
|
|
|
|
|
|
|
|
|
|
## 1. 软键盘
|
|
|
|
|
|
|
|
|
|
AWTK 也支持类似的功能,我们把它称为 action 键,在软键盘中可以这样定义:
|
|
|
|
|
|
|
|
|
|
```xml
|
|
|
|
|
<button name="action" style="highlight" w="20%" text="Return"/>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> 完整代码请参考 kb_default.xml
|
|
|
|
|
|
|
|
|
|
## 2. 编辑器
|
|
|
|
|
|
|
|
|
|
编辑器可以指定 action_text 属性,来修改软键盘上的 action 键上的文本:
|
2021-07-12 07:49:04 +08:00
|
|
|
|
|
2020-05-30 08:42:26 +08:00
|
|
|
|
```xml
|
|
|
|
|
<edit w="70%" right_margin="30" input_type="password" action_text="next">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
action\_text 可以通过 strings.xml 中文本进行翻译,所以用小写英文字母即可。action\_text 有几个特殊的取值:
|
|
|
|
|
|
|
|
|
|
* next 将焦点切换到下一个控件。
|
|
|
|
|
* done 完成,关闭软键盘。
|
|
|
|
|
|
2021-03-26 16:57:26 +08:00
|
|
|
|
```xml
|
|
|
|
|
<string name="return">
|
|
|
|
|
<language name="en_US">Return</language>
|
|
|
|
|
<language name="zh_CN">回车</language>
|
|
|
|
|
</string>
|
|
|
|
|
|
|
|
|
|
<string name="next">
|
|
|
|
|
<language name="en_US">Next</language>
|
|
|
|
|
<language name="zh_CN">下一个</language>
|
|
|
|
|
</string>
|
|
|
|
|
|
|
|
|
|
<string name="done">
|
|
|
|
|
<language name="en_US">Done</language>
|
|
|
|
|
<language name="zh_CN">完成</language>
|
|
|
|
|
</string>
|
|
|
|
|
```
|
|
|
|
|
|
2022-06-10 14:25:32 +08:00
|
|
|
|
软键盘中 action 按钮优先显示 edit 中设置的 action\_text,如果 edit 没有该属性,则显示 action 按钮的 text。
|
|
|
|
|
|
2020-05-30 08:42:26 +08:00
|
|
|
|
## 3. 事件处理
|
|
|
|
|
|
|
|
|
|
如果你想自己处理 action 按键按下的事件,可以注册编辑器的 EVT\_IM\_ACTION 事件。
|
|
|
|
|
|
|
|
|
|
如:
|
|
|
|
|
|
|
|
|
|
```c
|
|
|
|
|
static ret_t on_action_event(void* ctx, event_t* evt) {
|
|
|
|
|
widget_t* target = WIDGET(evt->target);
|
|
|
|
|
|
|
|
|
|
log_debug("%s action event\n", target->name);
|
|
|
|
|
|
|
|
|
|
return RET_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
widget_on(edit1, EVT_IM_ACTION, on_action_event, NULL);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> 完整代码请参考:https://github.com/zlgopen/awtk-c-demos/blob/master/demos/edit.c
|