【问题标题】:How to add ripple effect to Preference如何在首选项中添加涟漪效果
【发布时间】:2020-02-11 10:05:08
【问题描述】:

我有一个 PreferenceFragemnt,我想对 Preferences 产生一个服装连锁反应。所以我开始制作 CostumPreference 但我不知道如何设置背景可绘制对象。我找到了this post。但这对我不起作用。

这是我的服装偏好:

public class RipPreference extends Preference {
    private Context ctx;

    public RipPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        ctx = context;
    }

    public RipPreference(Context context) {
        super(context);
        ctx = context;
    }

    //This event won't be tiggered
    protected View onCreateView(ViewGroup parent) {
        //Preference is not an View so there is no onCreateView
        View view = super.onCreateView(parent);
        view.setBackground(<my ripple>);
        return view;
    }
}

    private void setCustomStyle(View view) {
        RippleDrawable drawable = (RippleDrawable) ctx.getDrawable(R.drawable.settings_preference_background);
        view.setBackground(drawable);
    }
}

也许有人有其他想法。 :)

【问题讨论】:

    标签: android android-preferences


    【解决方案1】:

    在您链接到的帖子中,他们使用方法onBindView,而不是onCreateView

    所以你可以试试:

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        view.setBackground(<my ripple>);
    }
    

    编辑:androidx Preference 库使用回收器视图,绑定视图的方法称为onBindViewHolder

    @Override
    protected void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        holder.itemView.setBackground(<my ripple>);
    }
    

    【讨论】:

    • 问题是超类没有 onBindView 所以它也不会被触发。
    • 你的超类到底是什么?我还为 androidx 首选项库添加了一个示例
    • 谢谢。我不知道。
    猜你喜欢
    • 2015-11-14
    • 2021-02-25
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多