FragemntTabHost的简单使用
来源:互联网 发布:医疗数据公司 编辑:程序博客网 时间:2024/06/07 04:57
FragementTabHost是Fragment的TabHost效果,FragmentTabHost是TabHost的子类,FragmentTabHost属于v4包的。
使用
布局:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.fragmenttabtest.MainActivity">
<!--Fragemnt的容器 –>
<LinearLayout
android:id="@+id/showData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
</LinearLayout>
<!--TaHost –>
<android.support.v4.app.FragmentTabHost
android:id="@+id/myFragemntTabHost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"/>
</LinearLayout>
Activity
/**
*继承的是v4包的 FragmentActivity
*/
public classMainActivity extends FragmentActivity {
FragmentTabHost myFragemntTabHost;//是v4包的
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFragemntTabHost=(FragmentTabHost)findViewById(R.id.myFragemntTabHost);
myFragemntTabHost.setup(this,getSupportFragmentManager(), R.id.showData);//首先將tabhost与Fragmnet的容器绑定//第三個参数是fragment的容器id
//其次将Fragment与tab进行绑定//添加显示的fragment
/**
* 第一个参数是tab选项的设置,可以单独设置内容,可以设置布局,可以设置内容+drawable
* 第二个参数是展示的fragemnt
* 第三个参数是可以为空
*/
myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("one").setIndicator(getView("电费",R.drawable.life_pay_dian)),
OneFragment.class,null);
myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("two").setIndicator(getView("燃气费",R.drawable.life_pay_ranqi)),
TwoFragment.class,null);
myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("three").setIndicator(getView("服务费",R.drawable.life_pay_service)),
ThreeFragemnt.class,null);
myFragemntTabHost.setOnTabChangedListener(newTabHost.OnTabChangeListener() {
@Override
public void onTabChanged(StringtabId) {
if("one".equals(tabId)){
Toast.makeText(MainActivity.this,"电费", Toast.LENGTH_LONG).show();
}else if("two".equals(tabId)){
Toast.makeText(MainActivity.this,"燃气费", Toast.LENGTH_LONG).show();
}else if("three".equals(tabId)){
Toast.makeText(MainActivity.this,"服务费", Toast.LENGTH_LONG).show();
}
}
});
}
privateView getView(String text,int id) {
//取得布局实例
View view=View.inflate(MainActivity.this, R.layout.layout_view,null);
//取得布局对象
ImageView imageView=(ImageView)view.findViewById(R.id.images);
TextView textView=(TextView)view.findViewById(R.id.texts);
//设置图标
imageView.setImageResource(id);
//设置标题
textView.setText(text);
return view;
}
}
Fragment中嵌套FragmentTabHost
布局可以使用上面的布局
Fragemnt
有一点需要注意不要在本Fragemnt使用自己否则会报android.view.InflateException,还有继承的Fragment必须是v4包的
public classOneFragment extends android.support.v4.app.Fragment {
private ViewrootView;
private FragmentTabHostmyFragemntTabHost;//是v4包的
@Override
@Nullable
public ViewonCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,@Nullable BundlesavedInstanceState) {
rootView =inflater.inflate(R.layout.activity_main,null);
myFragemntTabHost= (FragmentTabHost)rootView
.findViewById(R.id.myFragemntTabHost);
myFragemntTabHost.setup(getActivity(),getChildFragmentManager(),
R.id.showData);//第三個参数是fragment的容器id
// 添加显示的fragment
/**
* 第一个参数是tab选项的标题设置第二个参数是展示的fragemnt第三个参数是可以为空
*/
// myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("one")
// .setIndicator("电费"),
// OneFragment.class,null);
myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("two")
.setIndicator(getView("燃气费",R.drawable.life_pay_ranqi)),
TwoFragment.class,null);
myFragemntTabHost.addTab(myFragemntTabHost.newTabSpec("three")
.setIndicator(getView("服务费",R.drawable.life_pay_service)),
ThreeFragemnt.class,null);
myFragemntTabHost
.setOnTabChangedListener(newTabHost.OnTabChangeListener() {
@Override
publicvoid onTabChanged(StringtabId) {
if ("one".equals(tabId)) {
Toast.makeText(getActivity(),"电费",
Toast.LENGTH_LONG).show();
}elseif("two".equals(tabId)){
Toast.makeText(getActivity(),"燃气费",
Toast.LENGTH_LONG).show();
}elseif("three".equals(tabId)){
Toast.makeText(getActivity(),"服务费",
Toast.LENGTH_LONG).show();
}
}
});
returnrootView;
}
private View getView(Stringtext,intid) {
// 取得布局实例
Viewview = LayoutInflater.from(getActivity()).inflate(
R.layout.layout_fragment_tabhost,null);
// 取得布局对象
ImageViewimageView = (ImageView) view.findViewById(R.id.images_view);
TextViewtextView = (TextView) view.findViewById(R.id.texts_views);
// 设置图标
imageView.setImageResource(id);
// 设置标题
textView.setText(text);
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
}
- FragemntTabHost的简单使用
- 简单易懂的使用
- ant的简单使用
- Log4j的简单使用
- TCPDUMP的简单使用
- IComparer的简单使用
- TreeView的简单使用
- CListCtrl的简单使用
- Rose的简单使用
- OpenSSL的简单使用
- CInternetSession的简单使用
- 标签的简单使用
- 触发器的简单使用
- nekohtml的简单使用
- FileUpload的简单使用
- JFreeChart的简单使用
- JMX的简单使用
- Vi的简单使用
- 图解使用VS的安装项目打包程序
- 进制转换
- 排序-冒泡排序
- linux gcc常用命令
- 由点云创建深度图
- FragemntTabHost的简单使用
- Java--JavaWeb使用commons-dbutils简化数据库操作
- Leercode 35 Search Insert Position
- 从一个链表channelHead中删除和channelToDeleteHead中相同的元素
- ScrollView判断滑动到底部和顶部
- source insight 中文注释为乱码解决
- .Net下RabbitMQ消息队列 优先级ID设置
- CocoaPods安装和使用教程
- mv删除包含隐藏文件的所有文件