Establecer Parámetros de diseño RelativeLayout mediante programación – lanza ClassCastException
Estoy inflando un RelativeLayout de XML y, a continuación, intentar establecer mediante programación sus parámetros de diseño y estoy recibiendo un ClassCastException.
Código:
- Establecer varios cuadros de texto en un diálogo en android
- SetImageResource Vs setDrawable
- ¿Cómo referencia los valores de android: gravity en un archivo de recursos?
- Cómo administrar código para diferentes diseños para soportar todos los dispositivos
- Simple animación de transporte en el diseño de Android no funciona por segunda vez
profileHeader = (RelativeLayout)mInflater.inflate(R.layout.user_profile_header, null); profileHeader.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
lanza
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
He visto otras notas en la red para intentar usar LinearLayout.LayoutParams, pero que doesnt parece ayudar.
Si usted se está preguntando por qué estoy haciendo esto en absoluto y no sólo la configuración en el XML es porque estoy viendo algo extraño donde el diseño "salta" a un wrap / wrap. YO SOY fijándolo a fill_parent / fill_parent en el XML y en desplazar la vista "encoge" a lo que parece ser wrap / wrap. Es muy raro. Mirando el código fuente androide foursquared encontré un comentario donde el desarrollador dice lo mismo:
"Algo extraño está pasando con los parámetros de diseño, sin embargo, si no definimos explícitamente el diseño para que se rellene / rellene después de inflar, el diseño salta a un diseño envolvente / envolvente". (FriendsActivity.java:258)
Que suena como mi problema, por lo tanto, estoy tratando de hacer lo mismo (establecer el diseño a través de código), pero en su caso él está usando LinearLayout, mientras que estoy usando RelativeLayout.
¿Qué me estoy perdiendo? Gracias por adelantado.
- Android GridView de columna, anchura variable como la aplicación GooglePlus
- MPAndroidChart PieChart no se muestra cuando se utiliza en ScrollView
- ViewPager & ViewPagerIndicator no muestra nada
- Error al inflacionar la clase android.support.design.widget.TabLayout
- cómo fijar el máx. longitud del texto en edittext control
- ¿El diseño se invierte?
- ¿Cómo alineo estos números en el decimal en android?
- ¿Por qué mi SVG no se carga en Vector Asset Studio
Los params de diseño tienen que ser del tipo de los padres. Así que si está creando un RelativeLayout y agregándolo a un ListView, los parámetros de diseño deben ser del tipo ListView.LayoutParams, no RelativeLayout.LayoutParams. La forma correcta de hacerlo es llamar inflar de esta manera:
infle (R.layout.mylayout, theListView, false);
Esta versión de inflar () inflar correctamente los parámetros de diseño (android: layout_ *) definidos en XML.
Si su vista está en un ListView, debe utilizar AbsListView.LayoutParams
.
Vea también: No se puede establecer el margen del elemento en ListView mediante el adaptador personalizado
- ¿Cómo comprobar si un EditText fue cambiado o no?
- Android en la aplicación robotmedia: Restaurar transacciones