首页 > 解决方案 > 将动态属性传递给布局 XML 中的视图

问题描述

假设我的活动的布局 XML 具有这样的视图。下面的 XML 具有该属性的硬编码值,但我想在设置内容视图时从活动中传递值。

<myView
     android:id = "@+id/myView
      ....
     app:myAttriute = "someMode"/>

视图在构造函数中读取该值,如下所示并设置初始模式。

constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
{
    val inflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    inflater.inflate(R.layout.myView, this);

    var arr = context.obtainStyledAttributes(attrs, R.styleable.myView);
    var mode = arr.getString(R.styleable.myAttribute);

是否可以在活动中设置该属性,以便可以在视图的构造函数中使用该值?听起来可能很奇怪,像这样在视图的构造函数之后更改模式会导致一些问题

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myView = findView...
myView.myAttribute = "someMode";

如果可能的话,我希望我能以某种方式将属性传递给它的构造函数。

super.onCreate(savedInstanceState)
//takes the view's ID and attribute name/value to be used while
//setting the content view (passed to myView's constructor)
hypotheticalMethod(R.id.myView, "myAttriute", "someMode");
setContentView(R.layout.activity_main)

标签: androidandroid-layout

解决方案


推荐阅读