2011-07-28 16 views
8

Estoy tratando de asignar un selector de color a una clase extendida de LinearLayout, así que, creo que es como si hablamos de linearLayout.Color de selector en LinearLayout

seguí las instrucciones en la publicación this, la respuesta habla de formas.

ahora tengo 3 xml en dibujables carpetas:

archivo normal.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    <solid android:color="#ffffffff" /> 
</shape> 

archivo pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
    <solid android:color="#00000000" /> 
</shape> 

y, finalmente, el archivo bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/pressed" /> 
    <item android:state_focused="true" android:drawable="@drawable/pressed" /> 
    <item android:state_selected="true" android:drawable="@drawable/pressed" /> 
    <item android:drawable="@drawable/normal" /> 
</selector> 

Estoy accediendo esto de la siguiente manera:

Drawable d = getResources().getDrawable(context.getResources().getIdentifier("mypackageuri.tProject:drawable/bg", null, null)); 
    view.setBackgroundDrawable(d); 

El "normal" manifestar su bien, con el color establecido en "normal.xml", pero de ninguna manera con los demás, prosigo mi punto de vista y no pasa nada, no es el cambio de color de cualquier manera ...

no puedo ver lo que estoy haciendo mal ...

Gracias

+1

puede ser que desee para pegar su diseño xml – azharb

+6

Whoa que tiene que ser la forma más indirecta de conseguir un recurso estirable. . En lugar de 'getResources() getDrawable (context.getResources() getIdentifier (" mypackageuri.tProject: dibujable/bg", null, null));' tratar 'getResources() getDrawable (R.. drawable.bg); '. A menos que me esté perdiendo algo. – dmon

+0

@dmon buen punto, lo intentaré también! ¡¡Gracias!! – Deitools

Respuesta

22

Su punto de vista tiene que ser puede hacer clic con el fin de obtener el estado pressed cuando haces clic en él. Uso:

view.setClickable(true); 

o en el diseño xml:

android:clickable="true" 
+0

algo tan simple como eso ... ¡gracias! Lo intentaré mañana! – Deitools

+0

su bienvenida :) –

+1

funcionó, ty;) – Deitools

Cuestiones relacionadas