/ / Java метод за Android: layout_gravity - java, android, layout

Java метод за Android: layout_gravity - java, android, оформление

Бих искал да знам дали има начин да се обадя android:layout_gravity от Java метод. Не намерих никакъв метод в Android документацията, за да го направя. Това е картината на оформлението, което искам да изпълня:

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

Знам, че го правя чрез XML, както следва:

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

Но в моята ситуация, аз трябва да го направя чрез Java код, защото "ще внедря други динамични изгледи за оформление. За да се избегне сливане на XML оформление с Java код, бих предпочел да направя цялото оформление с Java.

Отговори:

29 за отговор № 1

Ами доколкото разбирам, търсите това Тя е за FrameLayout за друго оформление виж подходящи класове LayoutParams. За задаване на гравитацията като във вашия XML използвайте нещо като:

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

следван от addView с новопостроени LayoutParams


2 за отговор № 2

Може би аз те разбирам погрешно, но тук е:

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


2 за отговор № 3

Внимавай! Това няма да работи с LinearLayout. Защото конструкторът на LinearLayout.LayoutParams (...) е различен от конструктора FrameLayout.LayoutParams (...).

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

за разлика от

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

и този призив, въпреки не произвежда грешката на компилатора е погрешна:

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

1 за отговор № 4
button.setBackgroundResource(R.drawable.sound_on);
button.setText("On");
button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT);
button.invalidate();

1 за отговор № 5

За да промените layout_gravity атрибут за съществуващ изглед:

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

Бутонът се съдържа в a FrameLayout който има a gravity атрибут, съответстващ на layout_gravity XML атрибут. Връзка за документация.


-1 за отговор № 6

преди да добавите бутона, трябва да промените ориентацията на оформлението

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