摆脱(隐藏)Android TabWidget的"专注状态"



好的,所以这就是想法;我想创建一组图标,这些图标在应用程序上的所有活动中都保留在屏幕底部。我想到的第一件事是TabWidget。

在我花了一些时间后,我意识到我无法从选项卡上获得"聚焦状态",我知道选项卡应该以这种方式工作,但想法是让这些选项卡看起来像图标 - 它不应该看起来像他们一直专注。

我尝试使用tabHost.setBackgroundColor(color)但不幸的是它没有像我预期的那样工作。

这里有一些可视化来缓解问题.. https://i.stack.imgur.com/uF7fu.png

附言,对不起链接。作为新用户,我不允许直接在帖子上发布图像。

执行此操作的一种方法是对选项卡状态使用自定义Selector,无论选项卡是否具有焦点,该状态都是相同的。这可能看起来像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
    <!-- Focused states -->
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
    <!-- Pressed -->
    <item android:state_pressed="true" android:drawable="@drawable/tab_press" />
</selector>

您可以将其添加到可绘制目录,然后配置选项卡小部件以在活动中使用它(如下所示):

TabWidget tabWidget = getTabWidget();
for(int i = 0; i < tabWidget.getChildCount(); i++) {
RelativeLayout tabLayout = (RelativeLayout) tabWidget.getChildAt(i);
tabLayout.setBackgroundDrawable(res.getDrawable(R.drawable.tab_indicator));
}

更详细的指南在这里。看看这是否适合您。

一般来说,

您应该有一个"专注状态",以指示那些没有触摸屏的设备(即Google TV)的活动状态,或者为视障人士提供辅助功能工具。如果您仍然想沿着隐藏"聚焦状态"的路线前进,请参阅 Femi 关于自定义选择器的答案。

像 Femi 显示的那样修改所选样式是执行此操作的方法。

相关内容

  • 没有找到相关文章

最新更新