android-layout relativelayout - ¿Puedo configurar "android:layout_below" en tiempo de ejecución, programáticamente?





ejemplos params (4)


Si bien la respuesta de @jackofallcode es correcta, se puede escribir en una línea:

((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);

¿Es posible al crear un diseño relativo en tiempo de ejecución, establecer el equivalente de android:layout_below programáticamente?




Sí:

RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);

Primero, el código crea un nuevo diseño de parámetros especificando el alto y el ancho. El método addRule agrega el equivalente de xml correctamente a android:layout_below . Luego, simplemente llama a View#setLayoutParams en la vista que desea que tenga esos parámetros.




Alternativamente, puede usar los parámetros de diseño actuales de las vistas y modificarlos:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);



Si está desarrollando en una caja de Linux o Mac, una solución alternativa sería crear subcarpetas que incluyan enlaces simbólicos a sus archivos de diseño. Solo usa el comando ln con -s

ln -s PATH_TO_YOUR_FILE

El problema con esto es que su carpeta de diseño aún contiene todos los archivos .xml. Pero podría seleccionarlos utilizando las subcarpetas. Es lo más cercano a lo que te gustaría tener.

Acabo de leer que esto también podría funcionar con Windows si está utilizando Vista o una versión posterior. Hay este comando mklink . Solo buscalo en google, nunca lo he usado yo mismo.

Otro problema es que, si tiene el archivo abierto e intenta abrirlo nuevamente, el complemento lanza una excepción de puntero NULL. Pero no cuelga.





android android-layout relativelayout