双击后,Talk Back会将所选文本说出三次

时间:2017-06-01 19:37:23

标签: android fragmentpageradapter talkback

我正在开发一款Android应用程序,以方便视障人士的导航。应用程序的一个功能是让用户知道他当前的位置。用户有两种不同的视图来了解这一点。我正在使用FragmentPagerAdapter来实现两个并排的标签,以告诉他目前在旅行路线上的位置。使用FragmentPagerAdapter我们加载两个片段,用户可以在这些视图之间切换。

public class NavigateActivity extends FragmentActivity implements ActionBar.TabListener{
    private ViewPager viewPager;
    private NavigateActivity.TabsPagerAdapter mAdapter;
    private ActionBar actionBar;  
    viewPager.setAdapter(mAdapter);         
    mAdapter = new NavigateActivity.TabsPagerAdapter(getSupportFragmentManager());

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Adding Tabs
    private String[] tabs = {"Text", "Map"};
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
         // Override some existing java functions and load respective fragment on click
    });
}

Click here for image of the View 我在Android设备上打开了回话。 假设我在“文本”选项卡(选项卡1)上,并希望切换到“地图”选项卡(选项卡2)。 我点击“地图”标签,对话回读文字
我双击切换到Map选项卡,Talk back读取文本三次 我不希望在双击时或之后发布任何回话声明

我在Tab的一个片段中尝试了下面的代码,但是没有成功

public class TextNavigationFragment extends Fragment implements View.OnClickListener {      
  // Below code loads the fragment 
  View rootView = inflater.inflate(R.layout.text_navigation_fragment, null);
  rootView.setContentDescription("\u00A0");
}

我甚至尝试使用NavigateActivity中的代码来检测双击并说出空的Charsequence。

viewPager.setAccessibilityDelegate(new View.AccessibilityDelegate()
{
  @Override
  public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfo info)
  {
   super.onInitializeAccessibilityNodeInfo(v, info);
   CharSequence description = getResources().getText(R.string.id);
   AccessibilityAction customClick = new AccessibilityAction(AccessibilityAction.ACTION_ACTION_CLICK, description); 
   info.addAction(customClick);
  }
});

但是上面的代码显示了错误,因为我的应用程序在API <21的设备上运行。我无法理解如何使用* compat(用作设备API的上述代码的替代品&lt; 21)。

0 个答案:

没有答案