I am creating a custom EditText class because i need to set some custom fonts; However now when i click on the editText the android keyboard does not pop up anymore...
here is my class:
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); } }
and how i use it in 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" />
I thought the focusing events were handled by the fact that i extend the EditText class...
Any hints?
Hiding the Soft Keyboard Programmatically You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow, passing in the token of the window containing your edit field. This will force the keyboard to be hidden in all situations.
It's an old question but if someone cares, the problem is on the implementation of the constructor:
public CustomFontEditText(Context context, AttributeSet attrs) { this(context, attrs, 0); this.context = context; }
The last argument ("defStyle") which you set as 0, should be the default style for an EditText. If you take a look at the same constructor on the EditText class:
public EditText(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.editTextStyle); }
As you can see, the default style for an EditText should be used, so your constructor should look like this:
public CustomFontEditText(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.editTextStyle); this.context = context; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With