Kotlin 默认情况下,对讲不会聚焦在内部片段开始时的任何视图上

Kotlin 默认情况下,对讲不会聚焦在内部片段开始时的任何视图上,kotlin,android-fragments,autofocus,talkback,android-accessibility,Kotlin,Android Fragments,Autofocus,Talkback,Android Accessibility,我正在使用辅助功能对讲功能,我面临一个问题:我在父活动中有一个底部导航,我正在使用从设置选项卡打开另一个片段(内部片段)。添加,但默认情况下内部片段视图未获得焦点 我还尝试了。替换,但默认情况下,它不关注片段创建 开放片段代码 val details = DetailsFragment.newInstance(); getSupportFragmentManager().setupForAccessibility() getSupportFragmentManager().beginTransa

我正在使用辅助功能对讲功能,我面临一个问题:我在父活动中有一个底部导航,我正在使用
从设置选项卡打开另一个片段(内部片段)。添加
,但默认情况下内部片段视图未获得焦点

我还尝试了
。替换
,但默认情况下,它不关注片段创建

开放片段代码

val details = DetailsFragment.newInstance();
getSupportFragmentManager().setupForAccessibility()
getSupportFragmentManager().beginTransaction().add(android.R.id.content, details).commit() 
我使用了这个扩展函数,以避免将注意力集中在前面的片段上

在正常情况下,我显示在第一个片段开始时,它首先聚焦顶部
Textview
,并自动说话,但在内部片段中,默认情况下它没有聚焦,那么我应该怎么做才能在默认情况下在第一个视图上获得聚焦呢

我已经试过了

android:focusable="true"
android:focusableInTouchMode="true"
请求关注,但它不起作用


请告诉我,任何帮助都将是非常感谢的

我使用

view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
在你想聚焦的视图上,或者

Handler().postDelayed({
    view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}, someDelayMillis)
让系统做它所做的一切,然后在片刻后跳进去,强制改变焦点

但这可能会被认为是不好的可访问性,如果它干扰了通常的导航,这可能就是为什么要让焦点始终工作非常困难的原因!最好只是宣布新片段(使用类似于
view.announceForAccessibility(“新片段”)
)的方法),并让用户从顶部开始导航。这取决于你的应用,这是你的电话


另外,您可能希望对片段使用
replace
,而不是
add
,如果在旧片段上添加一个片段,对讲机可能会在查看旧片段上的“不可见”视图时卡住。我尝试了这两种方法。添加和。默认情况下,替换但内部片段无法获得焦点如果您滑动导航,并且它将焦点放在您实际上看不到的视图上,则问题更大,就像它被卡在旧片段上一样
replace
只是避免了这一点,它不会强制默认焦点。试试
AccessibilityEvent
这类东西,这对我来说很有用-但只是有时候,可访问性真的很难使用:(谢谢,我刚刚实现了这个,它就像一个charmyes一样工作,你是对的,我在导航上看到了旧的片段视图
Handler().postDelayed({
    view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}, someDelayMillis)