如何创建一个仅具有数字输入对话框的首选项?

时间:2019-06-23 16:47:21

标签: java android sharedpreferences customdialog

我想使用对话框中的数字输入来设置“首选项”设置菜单,以更改显示文本的文本大小。如果我只能为数字输入创建一个文本框,则用户无法键入任何字母字符或特殊符号,因此我将不必处理数字格式错误的异常。

我尝试做的第一件事是通过更改EditTextPreference的输入类型来制作一个数字输入框。我的第二次尝试是更改首选项的android:dialogLayout属性(我设法用LinearLayout制作了自定义对话框),但这导致了错误:java.lang.NullPointerException:尝试调用虚拟空对象引用上的方法'boolean 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>

I took some screenshots from the app

0 个答案:

没有答案