рассчитать высоту я дп ошибся - PullRequest
0 голосов
/ 11 декабря 2019

основная проблема здесь в том, что родительский макет представляет собой вложенный вид прокрутки, поэтому высота должна быть обернута содержимым, чтобы вид был похож на первое изображение

screenshot

я хочу сделать так, чтобы TextView «не иметь учетной записи? Зарегистрировать» находился внизу экрана, поэтому я вычисляю высоту своего телефона, а затем высоту макета, чтобы вычесть, вычесть их и назначитьрезультат для верхнего поля textview

и вот мой код

ViewTreeObserver observer = binding.parentConstraint.getViewTreeObserver();
        if (observer.isAlive()) {
            observer.addOnGlobalLayoutListener(() -> {
                DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
                float parentViewHeightInDP = (int) (binding.parentConstraint.getHeight() / displayMetrics.density);
                if (getContext() != null) {
                    float heightInDP = displayMetrics.heightPixels / displayMetrics.density;

                    float distanceBetweenLayoutBottomAndParenBottom =  heightInDP - parentViewHeightInDP;
                    if (distanceBetweenLayoutBottomAndParenBottom > 32) {
                        if (topMargin == 0) {
                            topMargin = 1;
                            ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) binding.loginTextDontHaveAccount.getLayoutParams();
                            layoutParams.topMargin = Math.round(distanceBetweenLayoutBottomAndParenBottom);
                            Handler handler = new Handler();
                            handler.postDelayed(() -> {
                                binding.loginTextDontHaveAccount.requestLayout();                            }, 
50);
                    }
                }

, но результат, который я получил

the result

поэтому мой реальный вопрос здесь заключается в том, почему здесь все еще есть место, я имею в виду, что TextView должен быть точно внизу

...