2011-10-27 110 views
1

[底部的解决方案]标签图标来改变点击

我需要一个标签有以下behaveyour但我不知道如何实现它:

  • 的标签需要处于最底层。
  • 标签需要图标&文字。
  • 每个图标需要不同。
  • 图标需要改变颜色时选择和选项卡需要覆盖。

我这么模糊地问这个问题的原因是,我尝试过一种方法,但碰到了一堵砖墙,所以我想知道更有经验的人会怎么做。

作为请求源的一些: CustomTabActivity.java

private TabHost mTabHost; 
private Context ctx = this; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // construct the tabhost 
    setContentView(R.layout.main); 

    setupTabHost(); 
    mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 
    setupTab(new TextView(this), "t1", R.drawable.myimg1); 
    setupTab(new TextView(this), "t2", R.drawable.myimg2); 
    mTabHost.setOnTabChangedListener(new OnTabChangeListener(){ 

     @Override 
     public void onTabChanged(String tabId) { 
      Log.e("Simon", "Current tab - " + Integer.toString(mTabHost.getCurrentTab())); 
      View currentView = mTabHost.getChildAt(mTabHost.getCurrentTab()); 
      currentView.getClass(); 
     } 

    }); 
} 

private void setupTabHost() { 
    mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(); 
} 

private void setupTab(final View view, final String tag, int num) { 
    View tabview = createTabView(mTabHost.getContext(), tag, num); 

    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() { 
     public View createTabContent(String tag) {return view;} 
    }); 
    mTabHost.addTab(setContent); 
} 

private static View createTabView(final Context context, final String text, final int num) { 
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
    TextView tv = (TextView) view.findViewById(R.id.tabsText); 
    tv.setText(text); 

    ImageView iv = (ImageView) view.findViewById(R.id.tabsImg); 

    iv.setImageResource(num); 
    return view; 
} 

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <LinearLayout android:orientation="vertical" 
      android:layout_width="fill_parent" android:layout_height="fill_parent"> 
      <FrameLayout android:id="@android:id/tabcontent" 
       android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> 
       <ViewStub android:id="@+id/stub1" 
        android:inflatedId="@+id/subTree" 
        android:layout="@layout/mylayout" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" /> 
      </FrameLayout> 
      <TabWidget android:id="@android:id/tabs" 
       android:layout_width="fill_parent" android:background="@drawable/tabs_bg" android:layout_height="wrap_content"/> 
     </LinearLayout> 
    </TabHost> 

</LinearLayout> 

mylayout.xml

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" android:id="@+id/progressBar1"></ProgressBar> 

</LinearLayout> 

--------- -----解决方案-------------

所以问题就解决了。我已经从res/drawable- [hdpi | ldpi | mdpi]文件夹中将静态图像替换为R.drawable.myimg1,并将其替换为res/drawable中的新xml文件,如下所示:

mydrawable1.xml

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

其中myimg1和myimg1_selected是我希望以不同状态显示的图像。

+0

哪部分不工作? –

+0

嗯,我有底部的标签,覆盖和不同的图标。我无法获取,因此图标颜色发生变化。 – OrhanC1

+1

你能发表一些代码吗? –

回答

1

检查this tutorial。它介绍如何选择标签时如何更改图标。

+0

我只是在通过测试项目中的某些东西工作。如果它有效,你已经得到了答案:) – OrhanC1

+0

得到了解决方案。现在编辑我的问题。 – OrhanC1