У меня есть макет, который является чем-то вроде этого:Как проверить программно, если все Просмотров уместиться на экране
LinearLayout (linearLayout)
'--TextView (textView1)
'--ImageView (imageView)
'--TextView (textView2)
textView1 меняет свой текст иногда и это может быть долго, поэтому он оставляет часть textView2 из экрана. Я хочу предотвратить это, поэтому я хочу удалить imageView из макета всякий раз, когда это происходит. imageView может отображаться или не отображаться в момент его вычисления (возможно, он был удален до того, как ранее был изменен textView1).
Это то, что я закодирован:
void changeText(String veryLongString){
textView1.setText(veryLongString);
int [] loc = new int [2];
textView2.getLocationOnScreen(loc);
int bottom = textView2.getMeasuredHeight() + loc[1];
if (imageView.getVisibility() == View.GONE)
bottom += imageView.getHeight();
if (bottom > linearLayout.getMeasuredHeight()){
imageView.setVisibility(View.GONE);
} else {
imageView.setVisibility(View.VISIBLE);
}
}
Но по каким-то причинам это не работает, как и следовало ожидать, потому что кажется, как будто изменения в положении и высоту соображений происходят не сразу , Когда я вызываю getMeasuredHeight() и getLocationOnScreen(), я получаю значения ПЕРЕД изменениями, которые я только что сделал. Результат, который я получаю, заключается в том, что если я установил очень большой текст, изображение не будет удалено, но если я затем установлю короткий текст, он будет удален. Если есть другие способы решения этой проблемы?
Я уважаю это, даю ответ и лучшее предложение. Во-вторых, тот факт, что реструктуризация XML может решить проблему намного лучше, чем полукоммерческое измерение вида. – zgc7009
Как вы думаете, какой правильный подход? Я открыт для внесения изменений в свой XML. Просто подумайте, что я изменяю тексты внутри TextViews программно. – iguarna
@iguarna a RelativeLayout с такими вещами, как 'layout_above' и' layout_alignParentBottom', должно быть хорошим началом. Я могу сказать, что мне потребовалось довольно много времени, чтобы хорошо манипулировать XML-файлами, но все учатся в разных расценках: P – zgc7009