私はankoのapplyRecursivelyに渡した関数を実装しました。LinearLayout.LayoutParamsのKotlinスマートキャストが機能しません
この関数内、私はmarginEndを追加したいビューがのLinearLayoutの中にあるので、私は次のコードを書いた:
when(view.layoutParams) {
is LinearLayout.LayoutParams -> {
view.layoutParams.marginEnd = view.resources.getDimensionPixelSize(R.dimen.min_spacing)
}
}
をそして私はview.layoutParamsが可変であるというエラーが表示されますプロパティが変更された可能性があります。だから私は、キャストを強制する必要がありました:
when(view.layoutParams) {
is LinearLayout.LayoutParams -> {
(view.layoutParams as LinearLayout.LayoutParams).marginEnd = view.resources.getDimensionPixelSize(R.dimen.min_spacing)
}
}
私はKotlinがNULL可能であることができ、変数でスマートキャストがないことを見たのstackoverflowで、ここで探しているが、view.layoutParamsはNULL可能ではないので、なぜスマートキャストができますタイプを推測しない?
オム、エラーメッセージが言うように、それは、変更可能だから? Nullabilityはスマートキャストとは関係ありません。 – yole