Как передать значение в мой CustomView программно? - PullRequest
0 голосов
/ 27 июня 2019

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="InteractiveImageView">
        <attr name="play_anim" format="reference|integer" />
    </declare-styleable>
</resources>

usage_example (activity_main). XML

<com.doitandroid.mylottie.InteractiveImageView
    app:play_anim="@raw/icon_home">

</com.doitandroid.mylottie.InteractiveImageView>

Когда я хочу добавить это представление программно, как это сделать?

MainActivity.java

LinearLayout linearLayout = findViewById(R.id.main_ll);
InteractiveImageView interactiveImageView = new InteractiveImageView(this);
linearLayout.addView(interactiveImageView);

Я не знаю, как добавить app:play_anim="@raw/icon_home" эту часть.

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

У вас должен быть конструктор в виде:

    public InteractiveImageView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    loadAttributes(attrs); //Here use the attributes.
}

Используйте AttributeSet для передачи ваших значений.

Пример:

    private void loadAttributes(AttributeSet attrs) {
    if (attrs != null) {
        TypedArray typedArray = mContext.obtainStyledAttributes(attrs, R.styleable.AudioPlayerView);
        mBackgroundDrawable = typedArray.getDrawable(R.styleable.AudioPlayerView_player_background);
    }
}
1 голос
/ 27 июня 2019

В вашем пользовательском представлении должна быть функция, такая как

public void setPlayAnim(@RawRes int playAnim) {
        // do something 
}

тогда вы можете позвонить с кода, как

interactiveImageView.setPlayAnim(R.raw.somthing)
...