如何为 Accessibilty/Talkback 的 SwitchPreference 提供 contentDescription?
How to give contentDescription to SwitchPreference for Accessibilty/Talkback?
我有一个包含多个 SwitchPreferences 的 Preference 屏幕。我需要为每个开关提供自定义 contentDescription 以实现可访问性。
没有 属性 作为 SwitchPreference 的 contentDescription。谁能帮助我如何为 Accessibilty/Talkback 的 switchPreferences 提供自定义描述?
首选项不是视图。您不能直接将 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" />
我有一个包含多个 SwitchPreferences 的 Preference 屏幕。我需要为每个开关提供自定义 contentDescription 以实现可访问性。 没有 属性 作为 SwitchPreference 的 contentDescription。谁能帮助我如何为 Accessibilty/Talkback 的 switchPreferences 提供自定义描述?
首选项不是视图。您不能直接将 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" />