/ / Java método para android: layout_gravity - java, android, layout

Método Java para Android: layout_gravity - java, android, layout

Eu gostaria de saber se há uma maneira de ligar android:layout_gravity propriedade de um método Java. Eu não encontrei nenhum método na documentação do Android para fazer isso. Esta é a imagem do layout que eu quero implementar:

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

Eu sei fazer isso através de XML, da seguinte forma:

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

Mas, na minha situação, preciso fazer isso por meio do código Java, porque implementarei outras visualizações de layout dinamicamente. Para evitar mesclar o layout XML com código Java, prefiro fazer todo o layout usando Java.

Respostas:

29 para resposta № 1

Bem, tanto quanto eu entendo que você está procurando esta É para o FrameLayout para outro layout, ver as classes LayoutParams apropriadas. Para definir a gravidade como em seu XML, use algo como:

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

Seguido por addView com recém construído LayoutParams


2 para resposta № 2

Talvez eu te entenda mal, mas aqui está:

http://developer.android.com/reference/android/widget/TextView.html#setGravity(int)


2 para resposta № 3

Cuidado! Isso não iria funcionar com LinearLayout embora. Porque o construtor LinearLayout.LayoutParams (...) é diferente do construtor FrameLayout.LayoutParams (...) O terceiro parâmetro não é gravidade, mas peso.

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

ao contrário de

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

e esta chamada, apesar não produzindo erro do compilador está realmente errado:

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

1 para resposta № 4
button.setBackgroundResource(R.drawable.sound_on);
button.setText("On");
button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT);
button.invalidate();

1 para resposta № 5

Para mudar o layout_gravity atributo para uma visualização 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);

O botão está contido em um FrameLayout que tem um gravity atributo correspondente ao layout_gravity Atributo XML. Link de documentação.


-1 para resposta № 6

antes de adicionar o botão, você deve alterar a orientação do seu layout

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);