Programmatically set '?selectable itembackground " sur Android view
Dans le xml, je le fais souvent ce à émuler onClick
en effet:
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground">
...
</android.support.v7.widget.CardView>
Est-il possible d'accéder à ?selectableItemBackground
en java?
24
demandé sur
Amit Vaghela
2016-06-23 12:35:48
5 réponses
appcompat vous pouvez utiliser,
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
cardView.setBackgroundResource(outValue.resourceId);
71
répondu
Amit Vaghela
2017-10-13 13:25:08
Vous devez le référencer comme
android.R.attr.selectableItemBackground
3
répondu
vanomart
2016-06-23 09:43:38
je suis à la recherche pour la même solution. J'ai légèrement changé réponse pour la rendre plus adaptée à la question posée. Appelez le code suivant de votre constructeur.
private void setClickableAnimation(Context context)
{
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(
android.R.attr.selectableItemBackground, outValue, true);
setForeground(getDrawable(context, outValue.resourceId));
}
2
répondu
Wirling
2018-02-20 12:08:42
essayez le code ci-dessous.
int[] attrs = new int[]{R.attr.selectableItemBackground};
TypedArray typedArray = context.obtainStyledAttributes(attrs);
int backgroundResource = typedArray.getResourceId(0, 0);
cardView.setBackgroundResource(backgroundResource);
cardView.setClickable(true);
typedArray.recycle();
0
répondu
Hardik Trivedi
2016-06-23 09:40:46
Hy là ! Pour ceux qui travaillent avec Kotlin, voici quelques extensions fonctions pour ajouter Ripple Sur Android View type:
private fun View.addRipple() = with(TypedValue()) {
context.theme.resolveAttribute(android.R.attr.selectableItemBackground, this, true)
setBackgroundResource(resourceId)
}
private fun View.addCircleRipple() = with(TypedValue()) {
context.theme.resolveAttribute(android.R.attr.selectableItemBackgroundBorderless, this, true)
setBackgroundResource(resourceId)
}
0
répondu
Nicolas Duponchel
2018-08-09 14:03:52