Пользовательский EditText не показывает клавиатуру на фокусе

Я создаю собственный класс EditText, потому что мне нужно установить некоторые пользовательские шрифты; Однако теперь, когда я нажимаю на editText, клавиатура Android больше не появляется …

Вот мой класс:

package ro.gebs.captoom.utils.fonts; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.Typeface; import android.util.AttributeSet; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import ro.gebs.captoom.R; public class CustomFontEditText extends EditText { private Context context; public CustomFontEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (!isInEditMode()) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomFontEditText, defStyle, 0); assert a != null; int fontId = a.getInteger(R.styleable.CustomFontEditText_fontNameEdit, -1); if (fontId == -1) { throw new IllegalArgumentException("The font_name attribute is required and must refer " + "to a valid child."); } a.recycle(); initialize(fontId); } this.context = context; } public CustomFontEditText(Context context, AttributeSet attrs) { this(context, attrs, 0); this.context = context; } public CustomFontEditText(Context context) { super(context); this.context = context; } @SuppressWarnings("ConstantConditions") public void initialize(int fontId) { Typeface tf = null; switch (fontId) { case 0: tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/OpenSans-Regular.ttf"); break; case 1: tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/OpenSans-Bold.ttf"); break; case 2: tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/OpenSans-Semibold.ttf"); break; case 3: tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/OpenSans-ExtraBold.ttf"); break; } setTypeface(tf); } } 

И как я использую его в XML:

 <ro.gebs.captoom.utils.fonts.CustomFontEditText android:id="@+id/add_details_txt_edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:hint="@string/type_here" android:inputType="textPersonName" custom:fontNameEdit="Regular" /> 

Я думал, что фокусные события были обработаны тем, что я расширяю класс EditText …

Любые намеки?

Solutions Collecting From Web of "Пользовательский EditText не показывает клавиатуру на фокусе"

  editText.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { editText.setFocusableInTouchMode(true); return false; } }); 

Это старый вопрос, но если кто-то заботится, проблема заключается в реализации конструктора:

 public CustomFontEditText(Context context, AttributeSet attrs) { this(context, attrs, 0); this.context = context; } 

Последний аргумент («defStyle»), который вы устанавливаете как 0, должен быть стандартом по умолчанию для EditText. Если вы посмотрите на один и тот же конструктор в классе EditText:

 public EditText(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.editTextStyle); } 

Как вы можете видеть, следует использовать стиль по умолчанию для EditText, поэтому ваш конструктор должен выглядеть так:

 public CustomFontEditText(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.editTextStyle); this.context = context; } 

Добавь это

  android:focusable="true" 
 implements KeyListener on your custom EditText Class and override methods of KeyListener 

Попытайтесь сделать ссылку для редактирования текста во время выполнения и фокус запроса запроса ()

  et.requestFocus() 

и попробовать

  android:focusable="true"