Java 安卓:在家长关注时更改TextView textColor
我在Java 安卓:在家长关注时更改TextView textColor,java,android,focus,themes,Java,Android,Focus,Themes,我在线性布局中有一个文本视图。LinearLayout能够接收焦点,我希望TextView的textColor在接收焦点时发生变化。我原以为使用a可以工作,但当线性布局接收焦点时,文本视图似乎没有接收焦点。我知道,因为我尝试过以下代码: mTextView.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFo
线性布局中有一个文本视图
。LinearLayout
能够接收焦点,我希望TextView
的textColor
在接收焦点时发生变化。我原以为使用a可以工作,但当线性布局
接收焦点时,文本视图
似乎没有接收焦点。我知道,因为我尝试过以下代码:
mTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.d(TAG, "Changed TextView focus to: " + hasFocus);
}
});
没有任何记录。我不想在LinearLayout上使用OnFocusChangeListener
来更改TextView
的textColor
,我认为这必须从XML完成。原因是在另一个活动中,我有一个带有自定义适配器和自定义视图的ExpandableListView
,Android会更改TextView
s的textColor
s(从亮到暗)当项目被聚焦时,在我的自定义视图中。您可以在LinearLayout的侦听器的onFocuseChange方法中获取您的文本视图。差不多
public void onFocusChange(View v, boolean hasFocus) {
TextView tv = (TextView)v.findViewById(R.id.myTextView);
tv.setTextColor(R.color.foo);
}
由于您的LL可以承载多个小部件,我认为即使您只有一个控件,LL的onFocus也不会传播,这是一篇老文章,但由于我也遇到了同样的问题,因此我找到了一个XML属性来执行此操作:
android:duplicateParentState="true"
(添加到TextView以在布局状态更改时更改其“聚焦”状态)我知道我可以这样做,但正如我在原始帖子中所说,我希望避免这样做。此外,如果您曾经为ListView使用过自定义适配器,那么您会看到,无论在一个项目视图中有多少个元素,它在聚焦列表项目时仍然会更改文本颜色。我很好奇他们是如何做到这一点的,我敢打赌这只是从XML实现的。