studio - viewgroup android
¿Cómo establecer el efecto Ripple en LinearLayout programáticamente? (1)
Quiero establecer el fondo android.R.attr.selectableItemBackground
en LinearLayout
. Al usar XML no hay problemas (funciona)
<LinearLayout
android:id="@+id/llMiner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground"
android:clickable="true" >
... pero tengo que hacer esto en código java, así que lo he intentado
llMiner.setClickable(true);
llMiner.setBackgroundResource(android.R.attr.selectableItemBackground);
... y no funciona, de hecho obtengo una NotFoundException
en esta segunda línea. Entonces, después de probar esta variante, pienso que el recurso es un Color.
llMiner.setClickable(true);
llMiner.setBackgroundColor(android.R.attr.selectableItemBackground);
Este no lanza una excepción, pero ... no funciona (no hay cambio de fondo al presionar, pero el estado cambia al presionar como tiene que hacer) ... ¿alguna sugerencia?
Puedes usar de esta manera.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// If we''re running on Honeycomb or newer, then we can use the Theme''s
// selectableItemBackground to ensure that the View has a pressed state
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
textView.setBackgroundResource(outValue.resourceId);
}