如何更改按钮的 android:layout_marginTop?
how do I change the android:layout_marginTop of a button?
我需要以编程方式更改按钮的 属性 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
How to set a button's parameters programatically
谢谢。
尝试为 LayoutParams 设置引力
params.gravity = Gravity.CENTER_HORIZONTAL;
这种方式可行:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mCallToActionButton.getLayoutParams();
params.topMargin = Pixel.convertDpToPx(newImageMargin);
mCallToActionButton.setLayoutParams(params);
我需要以编程方式更改按钮的 属性 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
How to set a button's parameters programatically
谢谢。
尝试为 LayoutParams 设置引力
params.gravity = Gravity.CENTER_HORIZONTAL;
这种方式可行:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mCallToActionButton.getLayoutParams();
params.topMargin = Pixel.convertDpToPx(newImageMargin);
mCallToActionButton.setLayoutParams(params);