Применение пользовательского шрифта к тексту редактирования - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть 2 EditText (s) в моей деятельности.Один для мобильного нет, а другой для пин-кода нет.Номер мобильного телефона без редактирования имеет тип ввода телефона:

Номер мобильного телефона без редактирования

<android.support.design.widget.TextInputLayout
        android:id="@+id/tiMobileNoFirst"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="10dp">

        <myPackageName.CustomEditText
            android:id="@+id/etMobileNo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/mobile_no"
            android:inputType="phone"
            android:maxLength="12"
            android:maxLines="1"
            android:textColor="@color/black" />
    </android.support.design.widget.TextInputLayout>

, а на выводе отсутствует тип ввода числоПароль:

PIN-код No EditText

<android.support.design.widget.TextInputLayout
        android:id="@+id/tiPINFirst"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp">

        <myPackageName.CustomEditText
            android:id="@+id/etPINFirst"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/pin"
            android:inputType="numberPassword"
            android:maxLength="4"
            android:maxLines="1"
            android:textColor="@color/black" />
    </android.support.design.widget.TextInputLayout>

мой класс CustomEditText выглядит следующим образом:

public class CustomEditText extends AppCompatEditText {
public CustomEditText(Context context) {
    super(context);
    EditHelper.setTypeFace(context,this);
}

public CustomEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    EditHelper.setTypeFace(context,this);
}

public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    EditHelper.setTypeFace(context,this);
}
}

class EditHelper{
static Typeface typeface;

public static void setTypeFace(Context context, EditText editText){
    if(typeface == null){
        typeface = Typeface.createFromAsset(context.getAssets(),"fonts/canaro_light.otf");
    }
    editText.setTypeface(typeface,Typeface.BOLD);
}
}

Применение пользовательского гарнитуры к мобильному устройству не работает, однако при его применении кПин нет, не работает, он возвращается к стандартной гарнитуре Android.

Изменение inputType пина на другое работает, однако мне нужно использовать numberPassword в этой ситуации.

Как мне достичь желаемого результата?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

numberPassword использует свою собственную гарнитуру.

что вы можете сделать, это установить тип ввода вашего пин-кода без текста редактирования как number и программно установить ** метод преобразования * в пароль

etPINFirst.setTransformationMethod(new PasswordTransformationMethod());

и измените android:inputType="numberPassword" на android:inputType="number" в вашем etPINFirst

0 голосов
/ 19 декабря 2018

Настройка inputType в Java сделала свое дело!

etPINFirst.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_PASSWORD);
...