Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
powowstal
30 / 30 / 6
Регистрация: 21.03.2013
Сообщений: 361
#1

Поле для ввода номера в формате: 38(0**)***-**-** - Программирование Android

21.02.2015, 16:48. Просмотров 572. Ответов 3
Метки нет (Все метки)

Кто то делал поле для ввода номера в формате: 38(0**)***-**-**
Мб как то быстренько это можно сделать ?
То есть в поле должно быть введено 38(0 ) они не стераются а когда вводишь цыфры они прописываются вместо звездочек
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2015, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поле для ввода номера в формате: 38(0**)***-**-** (Программирование Android):

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона - JavaScript
1.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона.

Создать форму для ввода телефонного номера в формате хх-хх-хх - JavaScript
Здравствуйте.. подскажите, как можно Создать форму для ввода телефонного номера в формате хх-хх-хх. И чтобы функция validphone(phone)...

Поле ввода для серийного номера - C++ WinAPI
Всем привет! В большинстве программного обеспечения разных компаний существует поле ввода для серийного номера для активации программы. Не...

Нужно сделать поле ввода номера телефона - Delphi
Подскажите как сделать, что бы в edit перед вводимыми в него данными выводилось '+380'.

Как сделать запрет ввода букв в поле для ввода input - JavaScript
Здравствуйте! Есть стандартное поле ввода <input type='text' name='name1' size='30' maxlength='11'> предназначенное для ввода...

Нужно сделать поле ввода для ввода даты по шаблону - Java
Нужно сделать поле ввода для ввода даты по шаблону ( __ . __ . ____ ). При воде нужно будет вводить только цифры, а разделители "точки"...

3
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.02.2015, 18:39 #2
Не делал, но, как первая мысль, смотрел бы в сторону TextWatcher и обрабатывал его события...

Добавлено через 1 минуту
Код страны - 380, поэтому правильней 380(**)***-**-**
0
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 727
21.02.2015, 19:36 #3
powowstal, можно попробовать вручную парсить строку на событии ввода символа (первое что в голову приходит)
0
powowstal
30 / 30 / 6
Регистрация: 21.03.2013
Сообщений: 361
22.02.2015, 02:21  [ТС] #4
Кому нужно, вышел такой код (немного изменив )
Регистрируем слушатель
Java
1
2
3
UsPhoneNumberFormatter addLineNumberFormatter = new UsPhoneNumberFormatter(
                        new WeakReference<EditText>(phoneNamber));
                        phoneNamber.addTextChangedListener(addLineNumberFormatter);
И сам класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.example.bill;
 
import java.lang.ref.WeakReference;
 
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
 
 
    public class UsPhoneNumberFormatter implements TextWatcher {
        //This TextWatcher sub-class formats entered numbers as 1 (123) 456-7890
        private boolean mFormatting; // this is a flag which prevents the
                                        // stack(onTextChanged)
        private boolean clearFlag;
        private int mLastStartLocation;
        private String mLastBeforeText;
        private WeakReference<EditText> mWeakEditText;
 
        public UsPhoneNumberFormatter(WeakReference<EditText> weakEditText) {
            this.mWeakEditText = weakEditText;
        }
 
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            if (after == 0 && s.toString().equals("380 ")) {
                clearFlag = true;
            }
            mLastStartLocation = start;
            mLastBeforeText = s.toString();
        }
 
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO: Do nothing
        }
 
        @Override
        public void afterTextChanged(Editable s) {
            // Make sure to ignore calls to afterTextChanged caused by the work
            // done below
            if (!mFormatting) {
                mFormatting = true;
                int curPos = mLastStartLocation;
                String beforeValue = mLastBeforeText;
                String currentValue = s.toString();
                String formattedValue = formatUsNumber(s);
                if (currentValue.length() > beforeValue.length()) {
                    int setCusorPos = formattedValue.length()
                            - (beforeValue.length() - curPos);
                    mWeakEditText.get().setSelection(setCusorPos < 0 ? 0 : setCusorPos);
                } else {
                    int setCusorPos = formattedValue.length()
                            - (currentValue.length() - curPos);
                    if(setCusorPos > 0 && !Character.isDigit(formattedValue.charAt(setCusorPos - 1))){
                        setCusorPos--;
                    }
                    mWeakEditText.get().setSelection(setCusorPos < 0 ? 0 : setCusorPos);
                }
                mFormatting = false;
            }
        }
 
        private String formatUsNumber(Editable text) {
            StringBuilder formattedString = new StringBuilder();
            // Remove everything except digits
            int p = 0;
            while (p < text.length()) {
                char ch = text.charAt(p);
                if (!Character.isDigit(ch)) {
                    text.delete(p, p + 1);
                } else {
                    p++;
                }
            }
            // Now only digits are remaining
            String allDigitString = text.toString();
 
            int totalDigitCount = allDigitString.length();
 
            if (totalDigitCount == 0
                    || (totalDigitCount > 12 && !allDigitString.startsWith("380"))
                    || totalDigitCount > 13) {
                // May be the total length of input length is greater than the
                // expected value so we'll remove all formatting
                text.clear();
                text.append(allDigitString);
                return allDigitString;
            }
            int alreadyPlacedDigitCount = 0;
            // Only '1' is remaining and user pressed backspace and so we clear
            // the edit text.
            if (allDigitString.equals("380") && clearFlag) {
                text.clear();
                clearFlag = false;
                return "";
            }
            if (allDigitString.startsWith("380")) {
                formattedString.append("380 ");
                alreadyPlacedDigitCount+=3;
            }
            // The first 3 numbers beyond '380' must be enclosed in brackets "()"
            if (totalDigitCount - alreadyPlacedDigitCount > 2 && totalDigitCount > 3) {
                formattedString.append("("
                        + allDigitString.substring(alreadyPlacedDigitCount,
                                alreadyPlacedDigitCount + 2) + ") ");
                alreadyPlacedDigitCount += 2;
            }
            // There must be a '-' inserted after the next 3 numbers
            if (totalDigitCount - alreadyPlacedDigitCount > 3) {
                formattedString.append(allDigitString.substring(
                        alreadyPlacedDigitCount, alreadyPlacedDigitCount + 3)
                        + "-");
                alreadyPlacedDigitCount += 3;
            }
            // There must be a '-' inserted after the next 10 numbers
            if (totalDigitCount - alreadyPlacedDigitCount > 2 && totalDigitCount > 10) {
                formattedString.append(allDigitString.substring(
                        alreadyPlacedDigitCount, alreadyPlacedDigitCount + 2)
                        + "-");
                alreadyPlacedDigitCount += 2;
            }
            
            // All the required formatting is done so we'll just copy the
            // remaining digits.
            if (totalDigitCount > alreadyPlacedDigitCount) {
                formattedString.append(allDigitString
                        .substring(alreadyPlacedDigitCount));
            }
 
            text.clear();
            text.append(formattedString.toString());
            return formattedString.toString();
        }
 
 
 
    }
Добавлено через 3 часа 30 минут
Кто задумал задавать форму для ввода информации, мой совет - разбивайте на EditText-ы части формы, с экономите кучу времени.
2
22.02.2015, 02:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2015, 02:21
Привет! Вот еще темы с ответами:

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода пароля - JavaScript
4.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода пароля.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени - JavaScript
5.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода времени.

HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле? - HTML, CSS
HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле?

На форме предоставьте пользователю возможность вводить целые числа (в поле для ввода Edit). При нажатии на клавишу Enter (если поле не пусто) его соде - Delphi
Разработайте приложение в соответствии с заданием. На форме предоставьте пользователю возможность вводить целые числа (в поле для ввода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru