Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓:在家长关注时更改TextView textColor_Java_Android_Focus_Themes - Fatal编程技术网

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实现的。