Problema con el método setLayoutParams en la interfaz de usuario de Android

Estoy haciendo una aplicación en la que tengo que cambiar la interfaz de usuario programmaticamente. Necesitaba cambiar los atributos XML layout_height y layout_width .

Pero cuando utilizo el método setLayoutParams , la aplicación se ejecuta y luego le doy un mensaje que ha dejado inesperadamente de funcionar y tengo que cerrar la fuerza.

He intentado fijar el LayoutParams como ViewGroup.LayoutParams también. Pero nada funciona. Por favor, revise el código adjunto y la guía.

Este es el código Java.

 private void fixLayoutVmain(){ ListView lv; ImageButton rev,stop,play,forw; lv=(ListView)findViewById(R.id.ListMain); rev=(ImageButton)findViewById(R.id.rev); stop=(ImageButton)findViewById(R.id.stop); play=(ImageButton)findViewById(R.id.plpa); forw=(ImageButton)findViewById(R.id.forw); Log.d("DEV1","ID's have been assigned"); LayoutParams lp=new LayoutParams(W, ((75*H)/100)); Log.d("DEV1","param object created"); lv.setLayoutParams(lp); Log.d("DEV1","ListView param set"); lp.height=(int)(10*H)/100; lp.width=(int)(10*H)/100; Log.d("DEV1","Changes to param made"); rev.setLayoutParams(lp); Log.d("DEV1","Reverse Button param applied"); stop.setLayoutParams(lp); Log.d("DEV1","Stop button param applied"); play.setLayoutParams(lp); Log.d("DEV1","forward button param applied"); forw.setLayoutParams(lp); Log.d("DEV1","All imagebutton changes have been made"); } 

Este es el archivo XML

 <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListVieW android:id="@+id/ListMain" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="bottom"> <ImageButton android:id="@+id/rev" android:src="@drawable/reverseimg" android:background="@null" android:scaleType="fitXY" /> <ImageButton android:id="@+id/stop" android:src="@drawable/stopimg" android:background="@null" android:scaleType="fitXY" /> <ImageButton android:id="@+id/plpa" android:src="@drawable/playimg" android:background="@null" android:scaleType="fitXY" /> <ImageButton android:id="@+id/forw" android:src="@drawable/forwardimg" android:background="@null" android:scaleType="fitXY" /> </LinearLayout> </LinearLayout> 

Cada vez que establece LayoutParams, compruebe el contenedor principal de la vista. En todas las instancias, el padre es LinearLayout. Necesitas usar LinearLayout.LayoutParams, así:

 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, height); lv.setLayoutParams(lp); 

Si esa es su fuerza particular o no, no tenemos forma de saberlo. Como se indica en los comentarios, debe comprobar LogCat y publicar los detalles de la excepción aquí. Dé esto un intento sin embargo, y vea si fija el problema.

Parece que tu aplicación se bloquea porque no has proporcionado android: layout_width y android: layout_height a tus ImageButtons.

Incluso si va a establecer el ancho y la altura en código, debe agregar estos parámetros a su archivo xml para cada ImageButton:

 <ImageButton android:id="@+id/rev" android:src="@drawable/reverseimg" android:background="@null" android:scaleType="fitXY" android:layout_height="0dp" android:layout_width="0dp" /> 

Volví a comprobarlo e hice ambos cambios como se dijo en las respuestas anteriores. Todavía no funcionó.

Sin embargo, descubrí que estaba ejecutando la función antes de utilizar el método setContentView (). Dado que no se había creado la vista, no se podían efectuar modificaciones.

Así que poner mi función después del método setContentView() hizo funcionar bien.

Gracias de todos modos.

  • Diferencia entre preferencia y preferencia compartida en Android
  • No se puede eliminar la vista de superposición
  • Desplome de la disposición de JellyBean
  • Home Icon Up Indicator Barra de Acción de Compat
  • ¿Cómo puedo anclar una imagen al centro dentro de una vista de imagen en una vista de desplazamiento, en Android?
  • Fuente para CollapsingToolbarLayout
  • Interface Builder (Diseñador de interfaz de usuario) para Android
  • ¿Cómo mostrar 2 vistas, con un gradiente de desvanecimiento efecto en Android?
  • Android - Diferencia entre Gridlayout y Gridlayout escalonado
  • Las vistas dentro de un Grupo de vistas personalizado no se muestran
  • Espacio negro debajo de la barra de título en el uso de fondo personalizado para listview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.