2009-10-17 10 views
6

Tengo TextView dentro de LinearLayout. El LinearLayout puede recibir el foco, y quiero que el textColor del TextView cambie cuando lo haga. Pensé que usar un ColorStateList funcionaría, pero parece que el TextView no recibe el foco cuando lo hace el LinearLayout. Lo sé, porque he probado este código:Android: cambie TextView textColor cuando se enfoca al padre

mTextView.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     Log.d(TAG, "Changed TextView focus to: " + hasFocus); 
    } 
}); 

Y nada se registra. No quiero utilizar un OnFocusChangeListener en el LinearLayout para cambiar el textColor del TextView, creo que esto tiene que hacerse desde XML. La razón es porque en otra actividad tengo un ExpandableListView con un adaptador personalizado y vistas personalizadas y Android cambia el textColor s de TextView s (de claro a oscuro) dentro de mis vistas personalizadas cuando los artículos están enfocados.

Respuesta

10

Ésta es una entrada antigua, pero desde que tuve la mismo problema, aquí es el atributo XML que he encontrado para hacer esto:

android:duplicateParentState="true" 

(que se añade a la Vista de Texto para cambiar su estado "centrado" cuando el estado de la disposición)

+0

Trabajando bien hermano :: :) –

4

Puede buscar su TextView en el método onFocuseChange del oyente de LinearLayout. Algo así como

public void onFocusChange(View v, boolean hasFocus) { 
    TextView tv = (TextView)v.findViewById(R.id.myTextView); 
    tv.setTextColor(R.color.foo); 
} 

Desde su LL puede alojar múltiples widgets de pienso se espera que onFocus de la LL no se propagará incluso si tiene un solo control

+0

sé que puedo hazlo de esa manera, pero como dije en la publicación original, me gustaría evitarlo. Además, si alguna vez ha utilizado un adaptador personalizado para un ListView, verá que aún cambia el color del texto al enfocar un elemento de la lista, sin importar cuántos elementos tenga dentro de una vista de elemento. Tengo curiosidad por cómo lo hicieron, y apuesto a que está hecho solo de XML. – Felix

Cuestiones relacionadas