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