0

私は24時間形式の時間を00:00から23:59まで許可する編集テキストを持っています

チェックは2つしか残っていません

1. hh は 23 を超えてはならず、mm は 59 を超えてはなりません。ユーザーが入力中または別の編集テキストに移動したときに、これを確認する必要があります。

2.は 1 つのみ (最小と最大) を持つ必要があります:符号

この編集テキストを動的に作成していますコードは次のとおりです

final EditText timeVisited = new EditText(this);
    timeVisited.setId(20);
    timeVisited.setText(Tm);
    timeVisited.setTextColor(Color.BLACK);
    timeVisited.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
    timeVisited.setHint("eg. 14:30 for 2:30 PM");
    timeVisited.setPadding(5,5,5,5);
    timeVisited.setSingleLine(false);
    timeVisited.setLines(1);
    timeVisited.setBackgroundResource(R.drawable.text_bg);
    customerToCatchTblRow.addView(timeVisited);// add the column to the table row here
    LinearLayout.LayoutParams params5 = (LinearLayout.LayoutParams)timeVisited.getLayoutParams();
    params5.setMargins(0, 0, 5, 0); //substitute parameters for left, top, right, bottom
    timeVisited.setLayoutParams(params5);

    //it checks max input is 5
    int maxLength = 5;
    InputFilter[] FilterArray = new InputFilter[1];
    FilterArray[0] = new InputFilter.LengthFilter(maxLength);
    timeVisited.setFilters(FilterArray);

    //It allow only numbers and : 
    InputFilter filter = new InputFilter() 
    { 
        @Override
        public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) 
        {
            for (int i = start; i < end; i++) 
            {
                if (!Character.isDigit(source.charAt(i))&& source.charAt(i) != ':') 
                {
                    return "";
                }
            }
            return null;
        } 
    }; 

    timeVisited.setFilters(new InputFilter[]{filter}); 
4

1 に答える 1

0

これを行う 1 つの方法は、配列を返す区切り文字として「:」を使用してソース変数を分割することです。ここで、配列のサイズを確認します。2 より大きい場合は、ソースに ':' が 2 つ以上あります。そうでない場合は、array[0] が 23 未満で、array[1] が 59 未満かどうかを確認します。

コードは次のようになります: (source が解析する変数であると仮定すると、 isInt は文字列が整数かどうかをチェックします。 split は区切り文字に基づいて文字列を分割します)

var arr = source.split(':');
if(arr.length>2)return false; 
if( isInt(arr[0]) && isInt(arr[1]) && arr[0]<23 && arr[1]<59)return true;
return false;

これが役立つことを願っています

于 2013-05-26T18:40:56.497 に答える