2012-01-04 16 views
31

Quiero establecer el fondo android.R.attr.selectableItemBackground en un LinearLayout. Al utilizar XML no hay problemas (funciona)Cómo establecer el efecto Ripple en LinearLayout programáticamente?

<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 el código de Java, por lo que he probado este

llMiner.setClickable(true); 
llMiner.setBackgroundResource(android.R.attr.selectableItemBackground); 

... y doesn No funciona, de hecho me sale un NotFoundException en esta segunda línea. Entonces, después de probar esta variante, pienso que el recurso es Color.

llMiner.setClickable(true); 
llMiner.setBackgroundColor(android.R.attr.selectableItemBackground); 

Ésta no se inicia una excepción, pero ... no funciona (no hay cambio de fondo cuando se pulsa, pero el cambio de estado de prensado, ya que tiene que hacer) ... cualquier sugerencia ?

+0

¿Está cambiando el color en el método onClick de su actividad .. ??? –

+0

No, no lo hago ... – Splact

+0

Entonces creo que debe anular el método Click para obtener su funcionalidad. –

Respuesta

84

Puede 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); 
} 
+1

Esto realmente funciona, y es la respuesta correcta. –

+0

No funciona para mí, color blanco, no llegan para mantener el color. Acentuación del tema en el dispositivo pre lollipop – Anthone

+1

Si desea conservar los colores de su tema, utilice R.attr.selectableItemBackground en lugar de android.R.attr.selectableItemBackground –

Cuestiones relacionadas