Когда LinearLayout
имеет свою высоту, установленную на wrap_content
, а ее дети имеют общую высоту, большую, чем экран, некоторые дети не будут видны. В этом случае я хочу удалить детей, пока все дети не будут видны. Каков эффективный способ сделать это?Как определить, является ли LinearLayout слишком маленьким, чтобы содержать его детей.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//when measuring with unspecified, the layout will be as large as it wants to be
super.onMeasure(UNSPECIFIED_SPEC, UNSPECIFIED_SPEC);
if (getOrientation() == VERTICAL){
wantedLength = getMeasuredHeight();
} else {
wantedLength = getMeasuredWidth();
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (getOrientation() == VERTICAL){
measuredLength = getMeasuredHeight();
} else {
measuredLength = getMeasuredWidth();
}
while (measuredLength < wantedLength){
//todo remove child
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (getOrientation() == VERTICAL){
measuredLength = getMeasuredHeight();
} else {
measuredLength = getMeasuredWidth();
}
}
}
Есть ли способ узнать, слишком мал макет, не измеряя дважды? Я нашел MEASURED_STATE_TOO_SMALL
в документах, но не знаю, как его использовать. https://developer.android.com/reference/android/view/View.html#getMeasuredHeightAndState()
Почему бы не использовать 'scrollview' для хранения всех? так или иначе, чтобы получить размер отображения из класса 'Display'. Затем вычислите общие размеры ваших предметов. затем удалите другие элементы. –
Я хочу представить информацию в 1 экране без прокрутки. Когда дети не подходят, менее важные могут быть удалены –