android的Java方法:layout_gravity

时间:2010-05-31 18:27:24

标签: java android layout

我想知道是否有办法从Java方法调用android:layout_gravity属性。我没有在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进行所有布局。

6 个答案:

答案 0 :(得分:30)

据我所知,您正在寻找this其他布局的FrameLayout是适当的LayoutParams类。要像在XML中那样设置重力,请使用以下内容:

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

后跟addView新构建的LayoutParams

答案 1 :(得分:2)

答案 2 :(得分:2)

WATCHOUT!但这不适用于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);

答案 3 :(得分:1)

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

答案 4 :(得分:1)

更改现有视图的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);

该按钮包含在FrameLayout中,其gravity属性对应layout_gravity XML属性。 Documentation link

答案 5 :(得分:-1)

在添加按钮之前,您应该更改布局的方向

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