1

好的,这就是这个想法;我想创建一组图标,这些图标在我的应用程序上的所有活动中持续存在于屏幕底部。我首先想到的是 TabWidget。

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

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

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

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

4

3 回答 3

1

一种方法是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 tabWidget = getTabWidget();

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

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

于 2012-04-30T03:41:50.463 回答
0

一般来说,您应该有一个“聚焦状态”来指示那些没有触摸屏的设备(即 Google TV)的活动状态,或者帮助视障者使用辅助工具。如果您仍然想沿着隐藏“聚焦状态”的路线走,请参阅 Femi 关于自定义选择器的回答。

于 2012-04-30T03:44:43.103 回答
0

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

于 2012-04-30T03:47:23.867 回答