更改 "imeOptions" (Android) 的行为
Change the behaviour of "imeOptions" (Android)
这是我现在的问题,伙计们。
我有下一个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"/>
我想更改按下键盘上的 'Done' 按钮对 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();
}
});
...
所以...我希望两者(按键盘上的 'Done' 并按 TextView)执行相同的操作。
知道怎么做吗?非常感谢。
试试这个
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 实现。)
使用TextView.OnEditorActionListener。
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
KeyboardHelper.hideSoftKeyboard(getActivity());
doSomeWoorrkThatYouNeed();
return true;
}
您也可以使用这个(设置一个特殊的侦听器,以便在对 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;
}
});
希望对您有所帮助!
您应该将此 android:clickable="true"
添加到 TextView
的 xml 中。
您还可以在 EditText
上使用 setOnEditorActionListener
设置一个 EditorActionListener,就像您在 TextView
.
上使用 setOnClickListener
一样
这是我现在的问题,伙计们。
我有下一个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"/>
我想更改按下键盘上的 'Done' 按钮对 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();
}
});
...
所以...我希望两者(按键盘上的 'Done' 并按 TextView)执行相同的操作。
知道怎么做吗?非常感谢。
试试这个
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 实现。)
使用TextView.OnEditorActionListener。
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
KeyboardHelper.hideSoftKeyboard(getActivity());
doSomeWoorrkThatYouNeed();
return true;
}
您也可以使用这个(设置一个特殊的侦听器,以便在对 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;
}
});
希望对您有所帮助!
您应该将此 android:clickable="true"
添加到 TextView
的 xml 中。
您还可以在 EditText
上使用 setOnEditorActionListener
设置一个 EditorActionListener,就像您在 TextView
.
setOnClickListener
一样