private int measureContentWidth(ArrayAdapter listAdapter) { ViewGroup mMeasureParent = null; int maxWidth = 0; View itemView = null; int itemType = 0; ArrayAdapter adapter = listAdapter; int widthMeasureSpec = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified); int heightMeasureSpec = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified); int count = adapter.Count; for (int i = 0; i < count; i++) { int positionType = adapter.GetItemViewType(i); if (positionType != itemType) { itemType = positionType; itemView = null; } if (mMeasureParent == null) { mMeasureParent = new FrameLayout(this); } itemView = adapter.GetView(i, itemView, mMeasureParent); itemView.Measure(widthMeasureSpec, heightMeasureSpec); int itemWidth = itemView.MeasuredWidth; if (itemWidth > maxWidth) { maxWidth = itemWidth; } } return(maxWidth + 40); }