Я надуваю RelativeLayout из XML, а затем пытаюсь программно установить его параметры макета и получаю ClassCastException.
Код:
profileHeader = (RelativeLayout)mInflater.inflate(R.layout.user_profile_header, null);
profileHeader.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
кидает
E/AndroidRuntime( 2963): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
E/AndroidRuntime( 2963): at android.widget.ListView.measureScrapChild(ListView.java:1119)
E/AndroidRuntime( 2963): at android.widget.ListView.measureHeightOfChildren(ListView.java:1202)
E/AndroidRuntime( 2963): at android.widget.ListView.onMeasure(ListView.java:1111)
E/AndroidRuntime( 2963): at android.view.View.measure(View.java:8222)
E/AndroidRuntime( 2963): at android.view.ViewGroup.measureChildWithMargins(V
Я видел другие заметки в сети, чтобы попытаться использовать LinearLayout.LayoutParams, но это, похоже, не помогает.
Если вам интересно, почему я вообще это делаю, а НЕ просто устанавливаю это в XML, то это потому, что я вижу нечто странное, когда компоновка «переходит» к переносу / переносу. Я установил его в fill_parent / fill_parent в XML и при прокрутке представление «сжимается» до того, что выглядит как обтекание / обтекание. Это действительно странно. Глядя на исходный код Android в формате Foursquared, я нашел комментарий, в котором разработчик говорит то же самое:
«Что-то странное происходит с параметрами макета. Если мы не установим для макета явное заполнение / заполнение после накачивания, макет переходит к макету обтекания / обтекания».
(FriendsActivity.java:258)
Это звучит так же, как моя проблема, поэтому я пытаюсь сделать то же самое (установить макет с помощью кода), но в его случае он использует LinearLayout, тогда как я использую RelativeLayout.
Что мне не хватает? Заранее спасибо.