Android预定义输入

时间:2017-05-25 07:09:32

标签: android android-layout android-xml android-input-method

如何在xml中为特定值的预定义输入创建输入?例如,我希望用户输入的血压可以是120/80,所以在我的输入中我希望用户输入已经放置正斜杠的输入字段。请指教。 这就是我所拥有的

enter image description here

我最接近的就是这个

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="3"
            android:gravity="start"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal">

        <android.support.design.widget.TextInputLayout
                android:layout_weight="0.8"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                    android:id="@+id/patientBloodPressure1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:focusable="true"
                    android:imeOptions="actionNext"
                    android:maxLines="1"
                    android:textSize="14sp" />

        </android.support.design.widget.TextInputLayout>

        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1.45"
                android:layout_gravity="center_horizontal|center_vertical"
                android:gravity="center"
                android:padding="2dp"
                android:text="@string/slash"
                android:textSize="14sp"
                android:textStyle="bold" />


        <android.support.design.widget.TextInputLayout
                android:layout_weight="0.75"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                    android:id="@+id/patientBloodPressure2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:focusable="true"
                    android:imeOptions="actionNext"
                    android:maxLines="1"
                    android:textSize="14sp" />

        </android.support.design.widget.TextInputLayout>


    </LinearLayout>

3 个答案:

答案 0 :(得分:0)

如果你想这么简单,

您应该使用文本观察器,它还可以帮助您在运行时验证值。

您可以在textwatcher中添加验证,例如:

将字符串分成两部分,并检查这些值是否属于您各自的值。

当字符串将超过3

的长度时,也会添加一个分隔符( - )

答案 1 :(得分:0)

选项很少。 首先,您可以尝试组合2个edittext,一个用于斜杠之前,一个用于之后(并确保它们看起来像一个)

第二个选项是使用TextWatcher,就像他们在信用卡到期日期一样

    editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // TODO Auto-generated method stub
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (before == 1 && count == 2 && s.charAt(s.length()-1) != '/') {
         editText.setText(editText.getText() += "/";
    }
    if (editText.getText().toString().toCharArray().length < 3) {
         editText.setText(editText.getText().toString().replace("/", ""));
    } 
} 
});

最后,创建一个像这样的自定义编辑文本: https://github.com/woxingxiao/XEditText

答案 2 :(得分:0)

使用/将非常困难。你可能会陷入一些边缘情况,那些血压低的人应该能够输入80/50,在这种情况下你不能使用3位数分割来自动添加android:hint值。

我建议您使用2个单独的字段,使用Blood Pressure (TextView Label) _____MAX_____ / ______MIN______ 提供更好的说明。像

<div class="modal-body">
{% get_available_languages as languages %}
    {% for lang_code, lang_name in languages %}
        {% language lang_code %}
        <a href="{% url 'home' %}" class="btn lang-btn {% ifequal request.LANGUAGE_CODE lang_code %}selected{% endifequal %}">{{lang_code|lang_name}}</a>
        {% endlanguage %}
    {% endfor %}
</div>