Cambiar el color de fondo del diseño Lineal al hacer clic

Estoy teniendo un diseño lineal en mi xml y estoy añadiendo otro diseño lineal (que contiene dos textviews) a ese diseño lineal a través de java. Los eventos táctiles funcionan perfectamente, pero quiero resaltar el diseño lineal seleccionado configurando el color de fondo. Por favor aconséjame.

Definir background.xml en la carpeta dibujable

 <?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="false" android:drawable="@drawable/normal" /> </selector> 

Normal.xml en carpeta dibujable

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> </shape> 

Comprimido.xml en carpeta dibujable

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF1A47"/> </shape> 

A continuación, establecer el fondo de su diseño

  android:background="@drawable/background" 

También puede configurar el fondo como a continuación

Al toque de su diseño

  ll.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch(event.getAction()) { case MotionEvent.ACTION_DOWN: ll.setBackgroundColor(Color.RED); break; case MotionEvent.ACTION_UP: //set color back to default ll.setBackgroundColor(Color.WHITE); break; } return true; } }); 

Independientemente del método que haya elegido (XML / código) – asegúrese de hacer que su LinearLayout clic en:

XML:

 android:clickable="true" 

Código:

 myLinearLayout.setClickable(true); 

Ponga el archivo selector.xml en una carpeta dibujable (res / drawable)

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

Y establecer el fondo de su disposición lineal en el archivo xml

 android:background="@drawable/background" 

El siguiente método te hará querer lo que quieres. Incluso la animación de onda en Lollipop. Simplemente pase un contexto la vista (puede ser un diseño lineal):

 public static void setClickableAnimation(final Context context, final View view) { final int[] attrs = new int[]{R.attr.selectableItemBackground}; final TypedArray typedArray = context.obtainStyledAttributes(attrs); final int backgroundResource = typedArray.getResourceId(0, 0); view.setBackgroundResource(backgroundResource); typedArray.recycle(); } 

Aquí está mi solución, es muy simple:

 <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_pressed_tab" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:src="@mipmap/ic_launcher" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/service_request" android:textColor="@color/white" android:textSize="@dimen/text_size_small" /> <requestFocus /> </LinearLayout> 

Bg_tab_pressed.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_longAnimTime"> <item android:drawable="@color/colorPrimaryDark" android:state_focused="true" android:state_pressed="true" /> <item android:drawable="@color/colorPrimaryDark" android:state_focused="false" android:state_pressed="true" /> <item android:drawable="@color/colorPrimaryDark" android:state_focused="true" android:state_pressed="false" /> <item android:drawable="@color/colorPrimary" android:state_focused="false" android:state_pressed="false" /> </selector> 

Pruebe la función View setBackgroundColor()

Consulta los documentos de Android:

http://developer.android.com/reference/android/view/View.html#setBackgroundColor%28int%29

 public void setBackgroundColor (int color) Added in API level 1 Sets the background color for this view. Parameters color the color of the background 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.