如何为首选项添加涟漪效应
How to add ripple effect to Preference
我有一个 PreferenceFragemnt,我想对 Preferences 产生服装连锁反应。所以我开始制作 CostumPreference,但我不知道如何设置可绘制背景。我找到了 。但这对我不起作用。
这是我的服装偏好:
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);
}
}
也许有人有别的想法。 :)
在您链接到的 post 中,他们使用方法 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>);
}
我有一个 PreferenceFragemnt,我想对 Preferences 产生服装连锁反应。所以我开始制作 CostumPreference,但我不知道如何设置可绘制背景。我找到了
这是我的服装偏好:
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);
}
}
也许有人有别的想法。 :)
在您链接到的 post 中,他们使用方法 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>);
}