如何在安卓中更改复选框首选项标题的文本颜色?



我想这样做:当取消选中CheckBoxPreference时,CheckBoxPreference标题的文本颜色变为灰色,如果选中,标题的文本色将恢复为原始颜色(取决于主题)。

到目前为止,我所做的是:我创建了一个从CheckBoxPreference扩展而来的新类。

public class CustomCheckBoxPreference extends CheckBoxPreference{
    TextView txtTitle;
    int originalTextColor;
    public CustomCheckBoxPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    protected void onBindView(View view) {
        txtTitle = (TextView) view.findViewById(android.R.id.title);
        originalTextColor = txtTitle.getCurrentTextColor();
        setOnPreferenceClickListener(new OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                if (isChecked()) {
                    txtTitle.setTextColor(originalTextColor);  //it doesn't work
                }
                else {
                    txtTitle.setTextColor(Color.GRAY);  //it doesn't work
                }
                return true;
            }
        });
        super.onBindView(view);
    }
}

当我运行应用程序时,txtTitle.setTextColor(..)显然不起作用,文本颜色根本没有改变。我还与调试器确认调用了onPreferenceClick方法。

即使我也做了同样的事情,但我也不知道原因。

但是,如果删除onPreferenceClickListener()并仅在else时使用,它会起作用。

protected void onBindView(View view) {
    txtTitle = (TextView) view.findViewById(android.R.id.title);
    originalTextColor = txtTitle.getCurrentTextColor();

            if (isChecked()) {
                txtTitle.setTextColor(originalTextColor); 
            }
            else {
                txtTitle.setTextColor(Color.GRAY); 
            }
            return true;
    super.onBindView(view);
}

相关内容

  • 没有找到相关文章

最新更新