0

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

我有下一个 TextView 和 EditText

activity_profile.xml

<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

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)都做同样的事情。

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

4

4 回答 4

1

您也可以使用这个(设置在 EditText 上执行操作时调用的特殊侦听器),它适用于 DONE 和 RETURN:

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;
        }
    });

希望它会有所帮助!

于 2016-02-15T09:46:15.927 回答
0

尝试这个

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 implimentation.)

于 2016-02-15T09:42:12.250 回答
0

使用 TextView.OnEditorActionListener。

@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
    KeyboardHelper.hideSoftKeyboard(getActivity());
    doSomeWoorrkThatYouNeed();
    return true;
}
于 2016-02-15T09:42:28.100 回答
0

您应该将此添加android:clickable="true"到您的 xml 文件中TextView。您也可以使用与setOnEditorActionListener您为.EditTextsetOnClickListenerTextView

于 2016-02-15T09:48:29.433 回答