首选项不是视图。您不能直接将contentDescription 添加到首选项。您需要创建一个从SwitchPreference 扩展的自定义首选项,并将可访问性信息添加到onBindViewHolder 中的切换视图。
public class SwitchPreferenceAccessibility extends SwitchPreference {
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
View switchView = holder.findViewById(R.id.switchWidget);
switchView.setContentDescription(getString(R.string.accessibility_information));
}
}
或者你可以使用declare-styleable属性,这样会更方便。
public class SwitchPreferenceAccessibility extends SwitchPreference {
public SwitchPreferenceAccessibility(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
mContentDescription = TypedArrayUtils.getText(a, R.styleable.SwitchPreferenceAccessibility_content_description, "");
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
View switchView = holder.findViewById(R.id.switchWidget);
switchView.setContentDescription(mContentDescription);
}
}
<SwitchPreferenceAccessibility
app:key="key"
app:title="title"
app:content_description="@string/accessibility_information" />