I am trying to measure a user height by moving a vertical seekbar. The issue is that when i try to resize an image, the image in some screens appears larger then the seekbar thumbnail, or lower than the thumbnail. How can I solve this problem. The code I wrote:
verticalSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
int measure = (int) ((((float) progress * point.x) / 250) - (progress * 0.5)) - 250;
if (progress > 140) {
if (point.x - measure < personImage.getHeight()) {
params.height = point.x - personImage.getHeight();
} else {
params.height = measure;
}
// Set LayoutParams
personImage.setLayoutParams(params);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
This is the result I want to archive:
If case that your seekbar max value != 100, than probably this is going to solve your issue:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
verticalSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
params.height = (int) (verticalSeekBar.getHeight() * (float) progress / YOUR_MAX_VALUE) + (int)((YOUR_MAX_VALUE - progress) / 2);
personImage.setLayoutParams(params);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});