给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);
}
}
好了监听已经实现。
相关文章推荐
- Android FragmentTabhost 监听tab点击事件
- Android FragmentTabhost 监听tab点击事件
- Android 监听TabHost点击事件
- 自定义TabHost中选项卡的点击监听事件
- 在WebBrowser控件中获取鼠标在网页(不是浏览器窗口)上点击的位置,
- 监听TextView中链接文本的点击事件
- UITableViewCell的点击事件而不是select事件
- RecyclerView实现点击和长按事件的监听方法
- android fragmenttabhost 有点击效果却没有切换的解决方法
- 自定义监听状态栏点击
- Java键盘事件监听(2)修改:使用监听键盘事件,而不是改写JTextField
- Android 监听按钮的点击事件
- j2se使用ActionListener实现界面上按钮点击的事件监听操作
- radioGroup的点击监听
- .net C# 实现点击下载PDF文件(通知浏览器打开下载对话框) 不是直接打开
- Vue监听事件实现计数点击依次增加的方法
- AlertDialog中使用自定义View,其中的Button如何设置点击事件监听
- NGUI butten 点击事件监听
- Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
- iOS自学-监听按钮点击、提醒框