0

我有一个具有多个 SwitchPreferences 的首选项屏幕。我需要为每个开关提供自定义 contentDescription 以实现可访问性。SwitchPreference 没有作为 contentDescription 的属性。任何人都可以帮助我如何为可访问性/对讲的 switchPreferences 提供自定义描述吗?

4

1 回答 1

0

偏好不是视图。您不能contentDescription直接添加到首选项。您需要创建一个自定义首选项,SwitchPreferenceonBindViewHolder.

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" />
于 2020-07-30T03:07:46.750 回答