android:layout_gravity的Java方法

我想知道是否有方法从Java方法调用android:layout_gravity属性。 我没有在Android文档中find任何方法来做到这一点。 这是我想要实现的布局的图片:

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代码来实现,因为我将dynamic地实现另一个布局视图。 为了避免将XML布局与Java代码合并,我宁愿使用Java进行所有布局。

Solutions Collecting From Web of "android:layout_gravity的Java方法"

那么据我了解,你正在寻找这是为其他布局的FrameLayout看到适当的LayoutParams类。 为了像XML一样设置引力,使用如下所示:

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

接下来是使用新构build的LayoutParams addView

小心! 虽然这不适用于LinearLayout。 因为LinearLayout.LayoutParams(…)构造函数与FrameLayout.LayoutParams(…)构造函数不同。 第三个参数不是重力而是重量。

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

而不是

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

而这个调用,尽pipe没有产生编译错误其实是错误的:

 lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.LEFT); 
 button.setBackgroundResource(R.drawable.sound_on); button.setText("On"); button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT); button.invalidate(); 

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

该button包含在FrameLayout中,该FrameLayout具有与layout_gravity XML属性相对应的gravity属性。 文档链接 。

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

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