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.
- ¿Es posible hacer que las pestañas de ActionBar sean más altas que la altura de ActionBar? ¿Si es así, cómo?
- Botón de Android con icono y texto
- RelativeLayout vs rendimiento de diseño lineal anidado
- Alinear el borde izquierdo con el centro - RelativeLayout
- Android: ¿Cómo rastrear el origen de una InflateException?
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>
- Alinear botones de radio dentro del grupo de radio
- Bloquear las posibilidades del paisaje en ciertos fragmentos
- ScrollView no muestra su contenido correctamente en versiones inferiores de android
- Galería de Android muestra imágenes de SDcard
- El restablecimiento del botón de conmutación no funciona correctamente
- findViewByID () sigue devolviendo null en la clase de vista personalizada
- Android - Uso Linear o Diseño de la tabla
- Disposición / control de Android para mostrar "flecha" de la pestaña abierta a la lista / menú?
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.
- JSON Error "java.lang.IllegalStateException: Se esperaba BEGIN_OBJECT pero era STRING en la línea 1 de la columna 1 ruta $"
- ¿Cómo establecer el estilo (pequeño y grande) a botón de modo programable?