Вот мой код для измерения высоты элементов внутри списка и установки высоты списка, основанной на общей высоте его детей.
Измерительный переключательКомпакт исключает исключение
У меня нет проблем при использовании любого другого вида.
public static void setListViewHeightBasedOnChildren(TwoWayView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
int totalHeight = 0;
View listItem = null;
for (int i = 0; i < listAdapter.getCount(); i++) {
listItem = listAdapter.getView(i, listItem, listView);
if (listItem instanceof ViewGroup) {
listItem.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
}
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); // this is where the exception happens
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getItemMargin() * (listAdapter.getCount() - 1)) + listView.getPaddingTop() + listView.getPaddingBottom();
listView.setLayoutParams(params);
listView.requestLayout();
}
Вот трассировки стека:
java.lang.NullPointerException
at android.text.StaticLayout.<init>(StaticLayout.java:50)
at android.support.v7.widget.SwitchCompat.makeLayout(SwitchCompat.java:606)
at android.support.v7.widget.SwitchCompat.onMeasure(SwitchCompat.java:526)
at android.view.View.measure(View.java:15395)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1038)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:576)
at android.view.View.measure(View.java:15395)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1038)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:576)
at android.view.View.measure(View.java:15395)
нет ответа до сих пор. .. –
Я не уверен, что это поможет, но я хотел бы знать, какую тему вы используете? –