您的位置:首页 > 移动开发 > Android开发

苦苦搜寻也没有找到Android的EditText与SeekBar联动例子,吐血分享哈!

2015-10-12 19:17 363 查看
苦苦搜寻也没有找到Android的EditText与SeekBar联动例子,吐血分享哈!

private boolean notHandleAfterTextChangedEvent = false;

private boolean changeFromSeekBar = false;

private boolean changeFromEditText = false;

这几个变量是关键,防止陷入死循环。

代码如下:

private EditText
etImageAdjustment = null;
private SeekBar
skbImageAdjustment = null;

private
boolean
notHandleAfterTextChangedEvent =
false;
private
boolean
changeFromSeekBar =
false
;
private
boolean
changeFromEditText =
false
;

@Override
protected
void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pick_image);
……
……
etImageAdjustment = (EditText) findViewById(R.id.pick_image_etImageAdjustment);
etImageAdjustment.addTextChangedListener(new TextWatcher() {

@Override
public
void
onTextChanged(CharSequence s,
int
start, int
before,
int
count) {
// TODO自动生成的方法存根

}

@Override
public
void
beforeTextChanged(CharSequence s,
int
start, int
count,
int
after) {
// TODO自动生成的方法存根

}

@Override
public
void
afterTextChanged(Editable s) {
// TODO自动生成的方法存根
if (notHandleAfterTextChangedEvent) {
notHandleAfterTextChangedEvent =
false;

// 光标置最后
CharSequence text =
etImageAdjustment.getText();
if (text
instanceof Spannable) {
Spannable spanText = (Spannable)
text;
Selection.setSelection(spanText,
text.length());
}
return;
}
if (s ==
null) {
return;
}
Integer value = 0;
if (s.toString().trim().equals("")) {
notHandleAfterTextChangedEvent =
true;
etImageAdjustment.setText("");
} else {
value = Integer.parseInt(s.toString());
}
if (value !=
null) {
// 上下限
if (value < 0) {
value = 0;
} else
if
(value > 99) {
value = 99;
}
notHandleAfterTextChangedEvent =
true;
etImageAdjustment.setText(Integer.toString(value));
try {
if (!changeFromSeekBar) {
changeFromEditText =
true;
skbImageAdjustment.setProgress(value);
} else {
changeFromSeekBar =
false;
}
} catch (NumberFormatException
e) {
Toast.makeText(getApplicationContext(),
"writeyour number", Toast.LENGTH_LONG).show();
}
}
}
});
skbImageAdjustment = (SeekBar) findViewById(R.id.pick_image_skbImageAdjustment);
skbImageAdjustment
.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public
void
onStopTrackingTouch(SeekBar
seekBar) {
// TODO自动生成的方法存根
}

@Override
public
void
onStartTrackingTouch(SeekBar
seekBar) {
// TODO自动生成的方法存根
}

@Override
public
void
onProgressChanged(SeekBar
seekBar,
int
progress, boolean
fromUser) {
// TODO自动生成的方法存根
if (fromUser) {
if (!changeFromEditText) {
changeFromSeekBar =
true;
etImageAdjustment.setText(Integer
.toString(progress));
} else {
changeFromEditText =
false;
}

……
}
}

});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: