2012-04-30 32 views
1

好吧,这就是主意;我想创建一组图标,这些图标在我的应用程序的所有活动中都保留在屏幕的底部。我首先想到的是TabWidget。摆脱(隐藏)Android TabWidget的“聚焦状态”

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

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

下面是一些可视化,以缓解关闭问题.. http://i.stack.imgur.com/uF7fu.png

P.S.,有关链接的遗憾。作为新用户,我不允许直接在帖子上发布图片。

回答

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)); 
} 

一个更详细指南是here。看看是否适合你。

+0

哇谢谢!这只是我一直在寻找的东西:D – rhadri

0

一般而言,您应该有一个“专注状态”来指示没有触摸屏(例如Google TV)的设备的活动状态,或者帮助视障人士使用辅助工具。如果你仍然想隐藏'专注状态'的路线,请参阅费米关于自定义选择器的回答。

0

修改像费米显示的选定风格是这样做的方式..