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í:

 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.

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.

  • Método para anular cuando el diseño se destruye en Android
  • Visibilidad de un botón en el temporizador
  • Caché de dibujo de Android
  • Android: cambiar pantallas con nueva actividad o simplemente cambiar la vista de contenido
  • Android: cómo deshabilitar todos los clics en una vista
  • android- puede hacer que un objeto dibujado en un lienzo haga clic
  • Android: necesita devolver la llamada cuando se muestra la vista
  • Android - Descripción de View.getLocalVisibleRect (Rect)
  • Android TextView en la parte superior de una vista
  • Android: ViewPager y HorizontalScrollVIew
  • Dibuja el fondo de la vista personalizada desde el archivo .png en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.