2012-04-30 30 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

修改像費米顯示的選定風格是這樣做的方式..