首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变"imeOptions“(安卓)的行为

改变"imeOptions“(安卓)的行为
EN

Stack Overflow用户
提问于 2016-02-15 09:31:30
回答 4查看 893关注 0票数 0

这是我现在的问题,伙计们。

我有下一个TextView和EditText

activity_profile.xml

代码语言:javascript
复制
<TextView
            android:layout_marginEnd="@dimen/activity_horizontal_margin"
            android:layout_marginRight="@dimen/activity_horizontal_margin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/done"
            android:id="@+id/done_profile_btn"
            android:textColor="@color/white"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
<EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:id="@+id/input_profile_swift"
            android:hint="@string/swift"
            android:inputType="textCapCharacters"
            android:textColor="@color/colorPrimaryDark"
            android:layout_marginBottom="22dp"
            android:maxLines="1"
            android:imeOptions="actionDone"/>

我想更改按键盘上的“完成”按钮对EditText执行的操作,以便与TextView相同,后者执行下一个操作:

ProfileActivity.java

代码语言:javascript
复制
done_btn = (TextView) findViewById(R.id.done_profile_btn);
swift = (EditText)findViewById(R.id.input_profile_swift);
done_btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                //saveChanges();
                //finish();
                Toast.makeText(getApplicationContext(), "Your changes have been saved", Toast.LENGTH_SHORT).show();
            }
        });
...

所以..。我希望这两个(按‘完成’在我的键盘和按下TextView)做同样的。

知道怎么做吗?非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-15 09:46:15

您也可以使用它(在EditText上执行操作时设置要调用的特殊侦听器),它既工作于DONE又可用于返回:

代码语言:javascript
复制
swift.setOnEditorActionListener(new OnEditorActionListener() {
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
              //saveChanges();
              //finish();
              Toast.makeText(getApplicationContext(), "Your changes have been saved", Toast.LENGTH_SHORT).show();
            }    
            return false;
        }
    });

希望能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2016-02-15 09:42:12

尝尝这个

代码语言:javascript
复制
EditText swift = (EditText)findViewById(R.id.input_profile_swift);
swift.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            Toast.makeText(getApplicationContext(), "Your changes have been saved", Toast.LENGTH_SHORT).show();
        }

    }
});

您必须实现OnEditorActionListener接口并将其设置为您的EditText。使用setOnEditorActionListener(OnEditorActionListener实现.)

票数 0
EN

Stack Overflow用户

发布于 2016-02-15 09:42:28

使用TextView.OnEditorActionListener。

代码语言:javascript
复制
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
    KeyboardHelper.hideSoftKeyboard(getActivity());
    doSomeWoorrkThatYouNeed();
    return true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35405686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档