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

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

Войти
Регистрация
Восстановить пароль
 
mathahakar
2 / 2 / 1
Регистрация: 31.01.2014
Сообщений: 80
#1

Минимальное и максимальное значение для EditText - Программирование Android

26.08.2015, 23:05. Просмотров 766. Ответов 4
Метки нет (Все метки)

Имеется EditText и SeekBar.
XML
1
2
3
4
5
6
7
8
9
10
11
12
<EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/KNVet"
            android:layout_weight="2"
            android:inputType="numberDecimal"
            android:textColor="#ffffff"
            android:maxLength="3" />
<SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/SeekStrength" />
Для наглядности:
Минимальное и максимальное значение для EditText

SeekBar задаёт значение для EditText:
Java
1
2
3
4
@Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
KNVet.setText(String.valueOf(SeekStrength.getProgress()));
    }
Также, при изменение "вручную" текста (числа) в EditText, SeekBar меняет свою позицию:
Java
1
2
3
4
5
6
7
8
9
@Override
    public void onClick(View v) {
        switch (v.getId()){       
            case R.id.KNVet:
                float KNVfET = Float.parseFloat(KNVet.getText().toString());
                SeekStrength.setProgress((int)KNVfET);
                break;
        }
    }
Вопрос в том, как установить рамки для значений?
Необходимо сделать так, чтобы в EditText можно было вводить, скажем, значения с 10 до 25, и чтобы при перемещении SeekBar значения опять таки менялись в этом диапазоне, а не 0-100.

Если можно, пожалуйста, самый простой способ реализации (как для новичка). Заранее спасибо большое.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2015, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Минимальное и максимальное значение для EditText (Программирование Android):

Ввод в один EditText и авто-вычисление в двух других EditText - Программирование Android
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в поле осуществляется с Button(ов). Вопрос...

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText - Программирование Android
EditText сещается вниз при вводе текста который занимает обём больше чем EditText. Как устранить?

Не могу подать значение из EditText в BasicNameValuePair - Программирование Android
package ru.smart.myapplication; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; ...

EditText getText возвращает устаревшее значение - Программирование Android
При повороте экрана, последний набранный текст исчезает. Просто исчезает. Сохранение его в виде строки onSaveInstanceState не помогло -...

Обновить значение EditText после получения данных от диалогового окна - Программирование Android
Здравствуйте. В моем приложении есть несколько EditText'ов. При нажатии на один из них я вызываю DatePickerDialog и полученный результат...

Как получить значение, введенное пользователем в EditText, созданного программно? - Программирование Android
Уважаемые программисты, очень нужна помощь. У меня имеется на форме кнопка, которая создает новый editText. Как сделать так, что бы в...

4
Mikalai
260 / 236 / 95
Регистрация: 11.01.2015
Сообщений: 663
27.08.2015, 00:20 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Попробуй так сделать:
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
private final int minValue = 10;
private final int maxValue = 25;
 
//..........
 
@Override
    public void onClick(View v) {
        switch (v.getId()){       
            case R.id.KNVet:
                float KNVfET = Float.parseFloat(KNVet.getText().toString());
                if(KNVfET < minValue) KNVfET = minValue;
                if(KNVfET > maxValue) KNVfET = maxValue;
                SeekStrength.setProgress((int)KNVfET);
                break;
        }
    }
 
@Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
             if(progress < minValue) {
                    progress = minValue;
                    seekBar.setProgress(progress);
             }
             if(progress > maxValue) {
                    progress = maxValue;
                    seekBar.setProgress(progress);
             }
             KNVet.setText(String.valueOf(progress));
    }
1
mathahakar
2 / 2 / 1
Регистрация: 31.01.2014
Сообщений: 80
27.08.2015, 00:51  [ТС] #3
Спасибо большое, попробую так.
0
mathahakar
2 / 2 / 1
Регистрация: 31.01.2014
Сообщений: 80
28.08.2015, 13:12  [ТС] #4
Ничего не выходит
Дело всё в том, что диапазон динамический, и он зависит от значения предыдущего EditText.
Что я делаю неправильно?
Вот весь код:
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
package com.mathahakar.e_cigmaster;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.SeekBar;
 
public class DIYliq extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener, View.OnClickListener {
 
    EditText KBet, KNVet, ONVet, H2Oet, PGet, VGet;
    CheckBox H2Ocb;
    SeekBar SeekBase, SeekStrength, SeekWater, SeekBalance;
    Button CalcLiqDiy;
 
    private int KNVmin, KNVmax;
 
    @Override
    protected void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_diy_liq);
 
        KBet = (EditText) findViewById(R.id.KBet);
        KNVet = (EditText) findViewById(R.id.KNVet);
        ONVet = (EditText) findViewById(R.id.ONVet);
        H2Oet = (EditText) findViewById(R.id.H2Oet);
        PGet = (EditText) findViewById(R.id.PGet);
        VGet = (EditText) findViewById(R.id.VGet);
        H2Ocb = (CheckBox) findViewById(R.id.H2Ocb);
        SeekBase = (SeekBar) findViewById(R.id.SeekBase);
        SeekStrength = (SeekBar) findViewById(R.id.SeekStrength);
        SeekWater = (SeekBar) findViewById(R.id.SeekWater);
        SeekBalance = (SeekBar) findViewById(R.id.SeekBalance);
        CalcLiqDiy = (Button) findViewById(R.id.CalcLiqDiy);
 
        SeekBase.setOnSeekBarChangeListener(this);
        KBet.setOnClickListener(this);
 
 
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_diy_liq, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        KBet.setText(String.valueOf(SeekBase.getProgress()));
        int KB = Integer.parseInt(KBet.getText().toString());
        if(KB>0){KNVmin=1; KNVmax=KB;}else{KNVmin=0;KNVmax=0;}
 
        KNVet.setText(String.valueOf(SeekStrength.getProgress()));
 
 
 
    }
 
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
 
    }
 
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
 
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.KBet:
                int KB = Integer.parseInt(KBet.getText().toString());
                SeekBase.setProgress(KB);
                KNVet.requestFocus();
                break;
            case R.id.KNVet:
                int KNV = Integer.parseInt(KNVet.getText().toString());
                if(KNV>KNVmax){KNVet.setText(KNVmax);}
                if(KNV<KNVmin){KNVet.setText(KNVmin);}
 
                break;
 
 
        }
 
    }
}
Вот скрин с пояснениями:
Минимальное и максимальное значение для EditText

В итоге, работает так:
Передвинут ползунок SeekBase -> KBet реагирует, меняя число на экране (при изменении числа с клавиатуры ползунок занимает соответствующее положение); после нажатия клавиши вперёд фокус смещается на KNVet, где появляется "0" во всех случаях, хоть в KBet установлен "0", хоть больше.
Нужно же, чтобы после установки значения в KBet устанавливался диапазон допустимых значений для KNVet с таким условием:
Java
1
2
int KB = Integer.parseInt(KBet.getText().toString());
if (KB > 0) {KNVmin=1; KNVmax=KB}else{KNVmin=0; KNVmax=0};
Так же, не разобрался, как сделать диапазон для SeekStrength.
Цитата Сообщение от Mikalai Посмотреть сообщение
Java
1
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if(progress < minValue) { progress = minValue; seekBar.setProgress(progress); } if(progress > maxValue) { progress = maxValue; seekBar.setProgress(progress); } KNVet.setText(String.valueOf(progress)); }
Объясните, пожалуйста, детальнее.
0
mathahakar
2 / 2 / 1
Регистрация: 31.01.2014
Сообщений: 80
31.08.2015, 11:24  [ТС] #5
Проблема решилась.
Если кому интересно:
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
package com.mathahakar.e_cigmaster;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.Toast;
 
 
public class DIYliq extends AppCompatActivity implements View.OnClickListener, SeekBar.OnSeekBarChangeListener {
 
    int KNVmin, KNVmax;
 
    EditText KBet, KNVet, ONVet, H2Oet, PGet, VGet;
    CheckBox H2Ocb;
    SeekBar SeekBase, SeekStrength, SeekWater, SeekBalance;
    Button CalcLiqDiy;
 
    @Override
    protected void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_diy_liq);
 
        KBet = (EditText) findViewById(R.id.KBet);
        KNVet = (EditText) findViewById(R.id.KNVet);
        ONVet = (EditText) findViewById(R.id.ONVet);
        H2Oet = (EditText) findViewById(R.id.H2Oet);
        PGet = (EditText) findViewById(R.id.PGet);
        VGet = (EditText) findViewById(R.id.VGet);
        H2Ocb = (CheckBox) findViewById(R.id.H2Ocb);
        SeekBase = (SeekBar) findViewById(R.id.SeekBase);
        SeekStrength = (SeekBar) findViewById(R.id.SeekStrength);
        SeekWater = (SeekBar) findViewById(R.id.SeekWater);
        SeekBalance = (SeekBar) findViewById(R.id.SeekBalance);
        CalcLiqDiy = (Button) findViewById(R.id.CalcLiqDiy);
 
        KBet.setOnClickListener(this);
        KNVet.setOnClickListener(this);
 
        SeekBase.setOnSeekBarChangeListener(this);
        SeekStrength.setOnSeekBarChangeListener(this);
 
        SeekStrength.setEnabled(false);
 
 
 
    }
 
 
    @Override
    public void onClick(View v) {
    switch(v.getId()) {
        case R.id.KBet:
            int KB = Integer.parseInt(KBet.getText().toString());
            SeekBase.setProgress(KB);
            if(KB>0){KNVmin=1; KNVmax=KB;}else{KNVmin=0; KNVmax=0;}
            if (KB>0){KNVet.setText("1"); SeekStrength.setEnabled(true);}
            else{KNVet.setText("0"); KNVet.setEnabled(false); SeekStrength.setEnabled(false);}
            ONVet.requestFocus();
            break;
        case R.id.KNVet:
            int KNV = Integer.parseInt(ONVet.getText().toString());
            SeekStrength.setProgress(KNV);
            break;
 
        }
    }
 
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 
        switch(seekBar.getId()) {
            case R.id.SeekBase:
                KBet.setText(String.valueOf(SeekBase.getProgress()));
                break;
            case R.id.SeekStrength:
                KNVet.setText(String.valueOf(SeekStrength.getProgress()));
                break;
        }
 
    }
 
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
 
    }
 
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        switch(seekBar.getId()) {
            case R.id.SeekBase:
                int KB = Integer.parseInt(KBet.getText().toString());
                if(KB>0){KNVmin=1; KNVmax=KB;}else{KNVmin=0; KNVmax=0;}
                if (KB>0){KNVet.setText("1"); SeekStrength.setEnabled(true);}
                else{KNVet.setText("0"); KNVet.setEnabled(false); SeekStrength.setEnabled(false);}
                break;
            case R.id.SeekStrength:
                int KNV = Integer.parseInt(KNVet.getText().toString());
                if (KNV<KNVmin){KNVet.setText(Integer.toString(KNVmin)); SeekStrength.setProgress(KNVmin);}
                if (KNV>KNVmax){KNVet.setText(Integer.toString(KNVmax)); SeekStrength.setProgress(KNVmax);}
        }
    }
}
0
31.08.2015, 11:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2015, 11:24
Привет! Вот еще темы с ответами:

InputType для EditText - Программирование Android
Заранее извиняюсь, если как-то неправильно или с ошибками сформулирую свою мысль. Все ведь с опытом приходит, которого пока маловато).Так...

EditText для ввода даты - Программирование Android
Нужно сделать edittext для даты. Я разместил рядом 3 шт. , для дня, месяца, и года соответственно. В каждом максимальное число вводимых...

Маска ввода для EditText - Программирование Android
Здравствуйте. А можно как то задать маску ввода для текстового поля? Ну например, вводим сумму денег в EditText и формат должен быть типа...

Выбор шрифта для EditText - Программирование Android
Всем здравствуйте. Пишу текстовый редактор. Помогите организовать выбор шрифта. Текст вводится в EditText. У меня маленький опыт, я только...


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

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

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