2009-10-17 113 views
6

我有TextViewLinearLayout內。 LinearLayout能夠獲得焦點,並且我希望TextViewtextColor在發生變化時能夠改變。我認爲使用ColorStateList可以工作,但在LinearLayout確實沒有得到重點。我知道,因爲我已經試過這段代碼:Android:更改TextView textColor父母專注時

mTextView.setOnFocusChangeListener(new OnFocusChangeListener() { 

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

沒有任何記錄。我不想在LinearLayout上使用OnFocusChangeListener來更改TextViewtextColor,我認爲這必須從XML完成。原因是在另一個活動中,我有一個ExpandableListView與一個自定義適配器和自定義視圖和安卓更改TextView s(從淺到深)我的自定義視圖中的項目時,重點集中textColor s。

回答

10

這是一個老帖子,也不會傳播,但因爲我有同樣的問題,這裏是XML屬性,我發現這樣做:

android:duplicateParentState="true" 

(被添加到TextView的改變其「聚焦」狀態時佈局的狀態變化)

+0

Working fine bro :: :) – 2015-05-07 14:56:32

4

您可以在LinearLayout的偵聽器的onFocuseChange方法中獲取yout TextView。喜歡的東西

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

由於您的LL可以承載多個小工具,我認爲它的預期,在11後的onfocus即使你有一個單一的控制

+0

我知道我可以這樣做,但正如我在原帖中所說,我想避免它。另外,如果你曾經使用過一個ListView的自定義適配器,你會發現它在聚焦列表項時仍然會改變文本顏色,不管項目視圖中有多少元素。我很好奇他們是怎麼做到的,我敢打賭它只是從XML完成的。 – Felix 2009-10-19 12:48:57