Disposición de Android Los parámetros cambian SÓLO el ancho y la altura
Sé cómo configurar el ancho y la altura de una vista usando LayoutParams
haciendo lo siguiente:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams(); params.width = height/7; params.height = height/10; button.setLayoutParams(params);
Ahora, tan pronto como quiera aplicar la misma altura y el ancho a otro botón, necesito crear otro LayoutParams o sobrescribir el existente como aquí:
- Invalidate () en la vista personalizada no hace que onDraw (Canvas c) se llame
- Cómo establecer una matriz como etiqueta a cualquier vista a través de diseño xml en android
- Android View PerformClick () y callOnClick () diferencia
- ¿Cómo obtener todas las vistas en una actividad?
- ¿Cuál es el propósito principal de los métodos setTag () getTag () de View?
android.view.ViewGroup.LayoutParams params2 = but2.getLayoutParams(); params2.width = height/7; params2.height = height/10; but2.setLayoutParams(params2);
Tengo alrededor de 50 botones en mi aplicación y dudo que se considera un buen código para obtener todos los Params con el fin de sólo cambiar el ancho y la altura – Quiero mantener los params restantes (toLeftOf, […]).
¿Hay una manera de cambiar SOLAMENTE la anchura y la altura de los params pero guardar el resto de los parámetros? Entonces parece algo como:
android.view.ViewGroup.LayoutParams params = button.getLayoutParams(); params.width = height/7; params.height = height/10; button.setLayoutParams(params); button2.setLayoutParams(params); button3.setLayoutParams(params); butt[...]
Muchas gracias por adelantado.
- ¿Cómo dejas de que ADT Logcat View aparezca automáticamente en Eclipse?
- ¿Examinar todas las sub-vistas de una vista de Android?
- Android: hacer una vista personalizada desplazable
- ¿Cómo comprobar la vista contiene otra vista?
- ¿Es posible detectar cuando cualquier aplicación está en pantalla completa en android?
- ¿Cómo configurar Media Controller sobre el video?
- Bitmap de TextView (getDrawingCache) siempre nulo
- Textura para pintar objeto en Android?
Todo el propósito de usar el método getLayoutParams()
es tomar los existentes de una View
(que guardan todas las reglas y cosas). A continuación, puede modificar parámetros específicos de esos LayoutParams
y mantener el resto sin modificar. Por lo tanto, necesita llamar a getLayoutParams()
y modificar el objeto devuelto si sus Views
varían en la configuración de xml. En caso de que estuvieran usando exactamente las mismas reglas en xml, podrías hacerlo como escribiste en tu último ejemplo.
Lo que le aconsejo hacer es simplemente hacer un método que envuelva todo el proceso de actualización de LayoutParams
. Al igual que:
private void setDimensions(View view, int width, int height){ android.view.ViewGroup.LayoutParams params = view.getLayoutParams(); params.width = width; params.height = height; view.setLayoutParams(params); }
Eso simplificaría su código de forma significativa, ya que entonces sólo puede llamar a este método para cada uno de sus botones, con los valores adecuados para el ancho y la altura.
setDimensions(button, height/7, height/10); setDimensions(button2, height/7, height/10); setDimensions(button3, height/7, height/10);
Si desea establecer diferentes tamaños a diferentes componentes le sugiero que lo haga dentro de XML en lugar de hacerlo dentro de la JAVA. Obtendrá resultados mucho mejores y será óptimo.
- ¿Cómo crear una base de datos sqlite en el momento de la instalación de la aplicación android?
- View.OnClickListener, ¿puede explicar?