Enterボタンが押されたときにリスナーをEditText
に設定しようとしていますが、まったく起動しませんでした。私はこれをLG Nexus 4 with Android 4.2.2 .setOnEditorActionListener
はAmazonKindleFireでAndroid 2.3とsetImeActionLabel
はどこにも機能しません!Enter
ボタンのテキストも設定できません。コードは次のとおりです。
mEditText.setImeActionLabel("Reply", EditorInfo.IME_ACTION_UNSPECIFIED);
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
return true;
}
});
私は何が間違っているのですか?どうすればこれを修正できますか?
TextWatcher を使用できます。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.charAt(s.length() - 1) == '\n') {
Log.d("TEST RESPONSE", "Enter was pressed");
}
}
});
レイアウトファイルにIME_ACTIONが設定されていることを確認してください。
<EditText
Android:id="@+id/search"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:hint="@string/search_hint"
Android:inputType="text"
Android:imeOptions="actionSend" />
完全な説明については、 http://developer.Android.com/guide/topics/ui/controls/text.html を参照してください。
XmlファイルでタグAndroid:inputType="text"
をEditTextに追加します
私のために働いたのはこれです、私はこれをEditTextに追加しました
Android:imeOptions="actionSend"
この行は、編集テキストをクリックするとポップアップするキーボードを検索ではなく送信ボタンにします
setOnEditorActionListenerで、アクション送信を探す次のメソッドをオーバーライドします
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
//implement stuff here
}
}
私は次のコードを使用します
<EditText
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_toRightOf="@id/ic_magnify"
Android:layout_centerVertical="true"
Android:textSize="15sp"
Android:textColor="#000"
Android:id="@+id/input_search"
Android:inputType="text"
Android:background="@null"
Android:hint="Enter Address, City or Zip Code"
Android:imeOptions="actionSearch"/>
mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent keyEvent) {
if(actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE
|| keyEvent.getAction() == KeyEvent.ACTION_DOWN || keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){
geoLocate();
}
return false;
}
});
わかりました。アクティビティのEdittextで機能しますが、フラグメントでは機能しません。
<EditText
Android:id="@+id/mEditText"
Android:imeOptions="actionSearch"
Android:imeActionLabel="搜索"
Android:inputType="text"
Android:singleLine="true"
Android:textSize="18dp"
Android:paddingTop="5dp"
Android:paddingBottom="5dp"
Android:paddingLeft="3dp"
Android:paddingRight="3dp"
Android:textColor="@color/black"
Android:layout_marginTop="7dp"
Android:layout_marginBottom="7dp"
Android:shadowColor="#4b000000"
Android:shadowDy="1"
Android:shadowDx="1"
Android:shadowRadius="1"
Android:cursorVisible="true"
Android:textCursorDrawable="@null"
Android:gravity="center_vertical|left"
Android:background="@color/transparent"
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="wrap_content"
tools:ignore="UnusedAttribute">
<requestFocus/>
</EditText>
mEditText.setImeActionLabel("搜索", EditorInfo.IME_ACTION_SEARCH);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
MToastUtil.show("搜索");
}
return false;
}
});
確認してください:
inputType = "text";
imeOptions = "actionSend";
OnKeyListener を使用してこれを試すことができます
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int actionId, KeyEvent event) {
Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
return false;
}
});