如何在 kotlin 的自定义布局中更改 layout_marginTop?

How to change layout_marginTop inside a custom Layout in kotlin?

我是 android 的初学者,我迷路了。

我需要动态更改“layout_marginTop”的值。

我需要访问的布局是这样的:

<com.rail.title.TitleRailLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/titleRailLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingLeft="@dimen/title_rails_padding_left"
android:paddingRight="@dimen/title_rails_padding_right"
android:layout_marginTop="32dp">
</com.rail.title.TitleRail>

class TitleRailLayout:

class TitleRailLayout @JvmOverloads constructor(
    context: Context,
    attributeSet: AttributeSet? = null,
    defStyleAttr: Int = 0
) : ConstraintLayout(context, attributeSet, defStyleAttr), EndlessRecyclerView.PaginationCallback {
  ...

在你看到的地方 layout_marginTop 我需要输入另一个值“如果”发生某些事情。

有人知道怎么做吗?

在您的 TitleRailLayout 中,您可以使用类似的东西:

fun updateMargin(topMargin: Int){
    if (....) {
      val params: ViewGroup.MarginLayoutParams = this.layoutParams as ViewGroup.MarginLayoutParams
      params.topMargin = topMargin; //This value is in px
      layoutParams = params
      requestLayout()
    }
}