Изменить размер изображения на основе вертикальной панели поиска? - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь измерить высоту пользователя, перемещая вертикальную панель поиска. Проблема в том, что когда я пытаюсь изменить размер изображения, изображение на некоторых экранах появляется больше, чем миниатюра поисковой панели, или ниже, чем миниатюра. Как я могу решить эту проблему. Код, который я написал:

 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) {

            }
        });

Вот результат, который я хочу заархивировать:

1 Ответ

0 голосов
/ 04 мая 2019

Если ваше максимальное значение seekbar! = 100, то, вероятно, это решит вашу проблему:

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) {

    }
});
...