私はキーボードを作るためにこれをしようとは、ユーザーがのEditTextをクリックした場合のみ表示されます他のすべてのソリューションは私のためには機能しません。 少し奇妙ですが、今から私が見つけた解決策です。 このイベントは、レイアウト上のすべての編集テキストに配置する必要があります。
EditText text = (EditText) getActivity().findViewById(R.id.myText);
text.setText("Some text");
text.setFocusableInTouchMode(false);
text.setOnClickListener(click);
text.setOnFocusChangeListener(focus);
EDIT:このよう
OnClickListener click = new OnClickListener() {
@Override
public void onClick(View v) {
v.setFocusableInTouchMode(true);
v.requestFocusFromTouch();
}
};
OnFocusChangeListener focus = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
v.setFocusableInTouchMode(false);
}
}
};
私はちょうどカスタムエディットテキストは、私のプロジェクトで使用して簡単にするために作る
、それは便利だった願っています。
public class EditTextKeyboardSafe extends EditText {
public EditTextKeyboardSafe(Context context) {
super(context);
initClass();
}
public EditTextKeyboardSafe(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
initClass();
}
public EditTextKeyboardSafe(Context context, AttributeSet attrs) {
super(context, attrs);
initClass();
}
private void initClass() {
this.setFocusableInTouchMode(false);
this.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setFocusableInTouchMode(true);
v.requestFocusFromTouch();
}
});
this.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
v.setFocusableInTouchMode(false);
}
}
});
}
}
これはうまくいきました。ありがとう:) –