我需要以编程方式更改按钮的属性android:layout_marginTop。但是下面的代码不会产生与更改xml相同的结果。我想知道是否有人能发现问题,这是我的按钮:
<Button
android:id="@+id/cta_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="0dp"
android:background="@color/cta_button_background"
android:text="CTA"
android:textColor="@color/cta_button_foreground"
android:textSize="18sp"
android:visibility="visible" />
现在我需要根据一些逻辑以编程方式更改“marginTop”。这是我累了,但不能正常工作。
// Adjust button to float above the image
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
int marginTop = Pixel.convertPxToDp(someNumber);
params.setMargins(0, marginTop, 0, 0);
mCallToActionButton.setLayoutParams(params);
mCallToActionButton.invalidate();
“mCallToActionButton”有一个指向按钮的有效指针,'someNumber'可以是任何值。
我使用了这个帖子,但按钮正在移动到其他地方,而不仅仅是改变它的topMargin
谢谢。答案 0 :(得分:1)
这种方式有效:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mCallToActionButton.getLayoutParams();
params.topMargin = Pixel.convertDpToPx(newImageMargin);
mCallToActionButton.setLayoutParams(params);
答案 1 :(得分:0)
尝试将重力设置为LayoutParams
params.gravity = Gravity.CENTER_HORIZONTAL;