Бих искал да знам дали има начин да се обадя 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);