Как создать предпочтение, которое имеет диалоговое окно только для ввода чисел? - PullRequest
0 голосов
/ 23 июня 2019

Я хотел бы создать меню настроек с настройками с цифровым вводом в диалоговом окне, чтобы изменить размер отображаемого текста.Если бы я мог создать текстовое поле только для ввода цифр, пользователь не мог бы вводить какие-либо алфавитные или специальные символы, поэтому мне не пришлось бы обрабатывать исключения с неправильным форматом чисел.

Первое, что у меня естьпопытался сделать поле для ввода номера, изменив тип ввода для EditTextPreference.Моя вторая попытка состояла в том, чтобы изменить свойство android:dialogLayout для предпочтения (мне удалось создать настраиваемое диалоговое окно с LinearLayout), но это вызвало ошибку: java.lang.NullPointerException: попытка вызвать виртуальный метод 'логический android.view.View.requestFocus () 'для ссылки на пустой объект

Мои предпочтения (в /xml/settings_pref.xml):

<EditTextPreference
    android:id="@+id/number_input"
    android:title="@string/pref_text_size"
    android:key="key_text_size"
    android:inputType="numberDecimal"
    android:dialogIcon="@mipmap/ic_android_logo"
    android:dialogLayout="@layout/custom_dialog" />

Мое диалоговое окно (в /layout/custom_dialog.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:background="#3E80B4"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/number_input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:inputType="numberDecimal"
        android:text="@string/pref_text_size_def"
        android:textColor="@android:color/white"
        android:textSize="15dp"
        android:textStyle="bold"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#3E80B4"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="Cancel"
            android:textColor="#5DBCD2"
            android:textStyle="bold" />

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:layout_marginLeft="5dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="OK"
            android:textColor="#5DBCD2"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>

Я сделал несколько скриншотов из приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...