我的布局有问题:(
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cuerpo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="vertical" >
...
在java代码中
LinearLayout cuerpo = (LinearLayout) findViewById(R.id.cuerpo);
if(align){
cuerpo.setGravity(Gravity.CENTER_VERTICAL);
}else{
cuerpo.setGravity(Gravity.NO_GRAVITY);
}
我需要layout_gravity没有引力。
答案 0 :(得分:8)
您正在讨论的布局重力位于LayoutParams
对象的LinearLayout
范围内。所以,从逻辑上讲,要实现这一目标,您必须遵循以下步骤:
获取LayoutParams
的{{1}}。
如果你知道LinearLayout
应该是什么,你可以投他们(注意,这是基于你的选择,所以你必须确保它是正确的!)。
根据需要设置LayoutParams
的{{1}}。
所以在代码中这将是:
gravity
或者作为一个简单的一个班轮,完成所有步骤:
LayoutParams
请注意:
我无法确切地看到你想要做什么,但这似乎不正确。 ViewGroup.LayoutParams layoutParams = cuerpo.getLayoutParams(); // Step 1.
LinearLayout.LayoutParams castLayoutParams = (LinearLayout.LayoutParams) layoutParams; // Step 2.
castLayoutParams.gravity = Gravity.CENTER_VERTICAL; // Step 3.
的类型不是((LinearLayout.LayoutParams) cuerpo.getLayoutParams()).gravity = Gravity.CENTER_VERTICAL;
的类型,而是LayoutParams
所居住的View
的类型。
(即,如@ gincsait的参考资料,如果我在Layout
中有View
,那么Button
的{{1}}就会属于LinearLayout
类型。对于LayoutParams
的{{1}},不能。
答案 1 :(得分:-2)
根据How to set layout_gravity programmatically?你应该写:
LinearLayout cuerpo = (LinearLayout) findViewById(R.id.cuerpo);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
if (align) {
params.gravity= Gravity.CENTER_VERTICAL;
} else {
params.gravity= Gravity.NO_GRAVITY;
}
cuerpo.setLayoutParams(params);