Передача динамического атрибута представлению в макете XML - PullRequest
0 голосов
/ 04 мая 2018

Скажем, 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...