2012-02-10 59 views

回答

11

我認爲,以下方法是最簡單的一個。你只需要安裝以下繪製(實際上,它是標籤Android的默認繪製)作爲標籤的背景:

<?xml version="1.0" encoding="utf-8"?> 
<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_selected" /> 
    <!-- Focused states --> 
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> 
    <!-- Pressed --> 
    <item android:state_pressed="true" android:drawable="@drawable/tab_press" /> 
</selector> 

其中tab_presstab_focustab_selected繪項目將是巴新(我寧願9-patches)與向下箭頭和靠近它的透明區域。 tab_unselected drawable不會有這個箭頭,但仍然會有相同的透明區域。剩下的唯一事情就是爲您的TabWidget指定負底部餘量。它的值由箭頭的高度決定(不要忘記使用density independent單位):

explanatory scheme

+0

這就是幫一個小bit.just粗糙地緣ABOT – 2012-03-03 06:17:19

+0

查看我添加的圖片。它應該澄清我的建議。 – 2012-03-03 10:14:39

+0

真的很棒的答案。 – Akram 2012-03-03 10:46:11

-2

您可以將圖片與標籤佈局:

<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="0dip" /> 
    <FrameLayout 
     android:fadingEdge="none" 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="0px" 
     android:layout_below="@android:id/tabs" 
     android:layout_alignParentBottom="true" 
     android:padding="0px" /> 
    <ImageView 
     .... 
     android:id="@+id/down_arrow_left"/> 
    <ImageView 
     .... 
     android:id="@+id/down_arrow_right"/> 
</RelativeLayout> 

,並在標籤活動添加監聽器:

getTabHost().setOnTabChangedListener(new OnTabChangeListener() { 
     public void onTabChanged(String tabId) { 
      if (tabId.equels("left")){ 
       findViewById(R.id.down_arrow_left).setVisibility(View.VISIBLE); 
       findViewById(R.id.down_arrow_right).setVisibility(View.INVISIBLE); 
      } else if (tabId.equels("right")){ 
       findViewById(R.id.down_arrow_left).setVisibility(View.INVISIBLE); 
       findViewById(R.id.down_arrow_right).setVisibility(View.VISIBLE); 
      } 
     } 
    }); 
0

tab_0_info.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/ic_menu_yourImg_selected" 
     android:state_selected="true" /> 
    <item android:drawable="@drawable/ic_menu_yourImg" /> 
</selector> 


private void addTab(int resouceTabId, int drawableId, 
     Class<? extends ActivityGroup> groupActivityClass) 
{ 
    Intent intent = new Intent(this, groupActivityClass); 
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + resouceTabId); 

    View tabIndicator = LayoutInflater.from(this).inflate(
      R.layout.tab_indicator, getTabWidget(), false); 

    TextView title = (TextView) tabIndicator.findViewById(R.id.title); 
    title.setText(resouceTabId); 
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
    icon.setImageResource(drawableId); 

    spec.setIndicator(tabIndicator); 
    spec.setContent(intent); 
    tabHost.addTab(spec); 

} 

//addTab(R.string.yourTabTitle, R.drawable.tab_0_info, YourGroup.class); 
相關問題