Java 如何在android TabLayout中检测选项卡焦点的更改?

Java 如何在android TabLayout中检测选项卡焦点的更改?,java,android,Java,Android,我有一个视图传呼机,上面有一个表格。该应用程序运行在具有物理d-pad方向键的设备上,该方向键可用于移动控制焦点 如何检测焦点何时移动到TabLayout中的特定选项卡? 当接收到焦点时,我可以看到选项卡高亮显示,但我找不到任何可能允许我检测到这一点的事件。 此外,TabSelected不起作用,因为它在按下d-pad的中心键“选择”聚焦选项卡之前不会启动。您可以将自定义视图添加到选项卡,然后为此视图设置FocusChangeListener。您可以将自定义视图添加到选项卡,然后设置此视图的se

我有一个视图传呼机,上面有一个表格。该应用程序运行在具有物理d-pad方向键的设备上,该方向键可用于移动控制焦点

如何检测焦点何时移动到TabLayout中的特定选项卡? 当接收到焦点时,我可以看到选项卡高亮显示,但我找不到任何可能允许我检测到这一点的事件。
此外,TabSelected不起作用,因为它在按下d-pad的中心键“选择”聚焦选项卡之前不会启动。

您可以将自定义视图添加到选项卡,然后为此视图设置FocusChangeListener。

您可以将自定义视图添加到选项卡,然后设置此视图的setOnFocusChangeListener。

您是否尝试在
视图上调用
setOnFocusChangeListener()
,该视图是
getCustomView()
TableLayout.Tab
上为每个选项卡返回的?我尝试了添加
tab1.getCustomView().setOnFocusChangeListener
刚刚完成了
表格布局.setupWithViewPager
,但它给了我一个NullPointerException。。。我可以做一些事情,比如
tab1.setIcon()
,所以我确信选项卡本身已经存在了……哦,对了,
getCustomView()
只有在您实际使用自定义视图时才存在。。。股票选项卡视图可能不支持此选项。您是否尝试过在
getCustomView()返回的
视图上调用
setOnFocusChangeListener()
,该视图是
TabLayout.tab上的
getCustomView()
为每个选项卡返回的?我尝试过添加
tab1.getCustomView().setOnFocusChangeListener
刚刚完成了
表格布局.setupWithViewPager
,但它给了我一个NullPointerException。。。我可以做一些事情,比如
tab1.setIcon()
,所以我确信选项卡本身已经存在了……哦,对了,
getCustomView()
只有在您实际使用自定义视图时才存在。。。股票选项卡视图可能不支持此选项。因此,我是否需要在新的自定义视图中重新创建现有选项卡内部布局,以获取此事件?因此,我创建了一个简单的XML布局,并将其作为自定义视图分配给选项卡。我现在可以使用
tab1.getCustomView
并分配一个
onFocusChangeListener
。问题是选项卡仍然获得焦点,而不是我的自定义视图。我还确保我的自定义视图的
Focusable
属性设置为true,但仍然没有乐趣-我没有获得焦点更改事件触发器。因此,我是否需要在新的自定义视图中重新创建现有选项卡内部布局,以获得此事件?因此,我创建了一个简单的XML布局,并将其作为自定义视图分配给选项卡。我现在可以使用
tab1.getCustomView
并分配一个
onFocusChangeListener
。问题是选项卡仍然获得焦点,而不是我的自定义视图。我还确保我的自定义视图的
Focusable
属性设置为true,但仍然没有乐趣-我没有获得焦点更改事件触发器。