您的位置:首页 > 其它

给tabhost加上点击监听,不是onTabChanged(String)监听

2014-04-13 11:56 253 查看

给tabhost加上点击监听,不是onTabChanged(String)监听

2012-08-11 01:43 5209人阅读 评论(0) 收藏 举报
stringandroidlayoutnull测试

最近在项目中遇到点击tabhost里的tab项时做出监听,注意不是onTabChanged(String str)的监听,因为该监听是只有当你切换tab时才会发生动作事件。

TabHost的使用:

1:首先定义tabhost的布局

[html] view plaincopy

<TabHost

android:id="@android:id/tabhost"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical" >

<TabWidget

android:id="@android:id/tabs"

android:layout_width="wrap_content"

android:layout_height="50dp"

/>

FrameLayout

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@android:color/transparent"

/>

</LinearLayout>

</TabHost>

这样你有了布局,

接下来,让你的类继承TabActivity,然后定义成员变量:

[java] view plaincopy

private TabHost mTabHost;

private TabWidget mTabWidget;

接着在OnCreate()里面进行初始化,

[java] view plaincopy

mTabHost = getTabHost();

mTabHost.setup(getLocalActivityManager());

mTabWidget = mTabHost.getTabWidget();

然后进行setTab1(),setTab2()······

[java] view plaincopy

mTabHost.setOnTabChangedListener(this);

setTab(TAB_1, true);

//默认设置第一个选项卡

setTab1()方法就是创建新的标签tab代码如下:

[java] view plaincopy

private void setTab1() {

View view = mInflater.inflate(R.layout.xxx, null);

((TextView) view.findViewById(R.id.x)).setText(getResources()

.getString(R.string.tab_forum_1));

Intent newsList = new Intent(this, AAAivity.class);

TabSpec mTabSpec1 = mTabHost.newTabSpec(getResources().getString(

R.string.tab_forum_1));

mTabSpec1.setIndicator(view);

mTabSpec1.setContent(newsList);

mTabHost.addTab(mTabSpec1);

}

setTab(TAB_1,true);方法其中里面的TAB_1=1;

该方法为:监听测试为点击第二个tab选项卡时出现点击事件。

[java] view plaincopy

private void setTab(int id, boolean flag) {

switch (id) {

case TAB_1:

mTabWidget.getChildAt(TAB_1).setBackgroundResource(R.drawable.select_group_bg2);

abWidget.getChildAt(TAB_2).setBackgroundDrawable(null);

case TAB_2:

mTabWidget.getChildAt(TAB_2).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (mTabHost.getCurrentTab() != TAB_2) {//一定要判断这个是为了防止阻碍切换事件

mTabHost.setCurrentTab(TAB_2);

}else{

//做你要做的事情

}

}

});

mTabWidget.getChildAt(TAB_1).setBackgroundDrawable(null);

}

好了,接着写onTabChanged(String tabId)方法

[java] view plaincopy

if (tabId.equalsIgnoreCase(getResources().getString(

R.string.tab_forum_1))) {

setTab(TAB_1, true);

} else if (tabId.equalsIgnoreCase(getResources().getString(

R.string.tab_forum_2))) {

setTab(TAB_2, true);

}

}

好了监听已经实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: