studio linearlayout layout_width gridlayout examples ejemplos ejemplo dinamico caracteristicas java android layout

linearlayout - Método Java para Android: layout_gravity



relativelayout android (6)

Me gustaría saber si hay una forma de llamar a android:layout_gravity propiedad de android:layout_gravity desde un método Java. No encontré ningún método en la documentación de Android para hacerlo. Esta es la imagen del diseño que quiero implementar:

http://www.anddev.org/resources/image/2234

Sé hacerlo a través de XML, de la siguiente manera:

<FrameLayout xlmns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:layout_gravity="left|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<" /> <Button android:layout_gravity="right|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=">" /> </FrameLayout>

Pero en mi situación, tengo que hacerlo a través del código Java, porque implementaré otras vistas de diseño dinámicamente. Para evitar combinar el diseño XML con el código Java, preferiría hacer todo el diseño con Java.


¡Cuidado! Sin embargo, esto no funcionaría con LinearLayout. Porque el constructor LinearLayout.LayoutParams (...) es diferente del constructor FrameLayout.LayoutParams (...). El tercer parámetro no es la gravedad sino el peso.

LinearLayout.LayoutParams(int width, int height, float weight)

Opuesto a

FrameLayout.LayoutParams(int width, int height, int gravity)

y esta llamada, a pesar de no producir el error del compilador es realmente incorrecta:

lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.LEFT);


Bueno, por lo que entiendo que estés buscando this , es para FrameLayout para otro diseño ver las clases apropiadas de LayoutParams. Para configurar la gravedad como en su XML, use algo como:

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.LEFT | Gravity.CENTER_VERTICAL)

seguido de addView con addView de nueva construcción


Para cambiar el atributo layout_gravity para una vista existente:

Button button = (Button) findViewById(R.id.some_button); FrameLayout.LayoutParams params; params = (LayoutParams) button.getLayoutParams(); params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; button.setLayoutParams(params);

El botón está contenido en un FrameLayout que tiene un atributo de gravity correspondiente al atributo XML de layout_gravity . Enlace de documentación .



antes de agregar el botón, debe cambiar la orientación de su diseño

yourbutton.setGravity(Gravity.RIGHT); LayoutParams layout = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT); layout.gravity = Gravity.RIGHT; yourbutton.setLayoutParams(layout); yourlayout.setGravity(Gravity.RIGHT); yourlayout.addView(yourbutton);


button.setBackgroundResource(R.drawable.sound_on); button.setText("On"); button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT); button.invalidate();