智慧北京:Tab对应的视图的抽取
2016-10-08 20:53
204 查看
实现内容:tab的基控制器部分:title+content
1、实现base_tab布局
分两部分:title使用Relativelayout布局,添加入ImageButton+TextView;内容部分FrameLayout制作容器
2、在Tab控制器(作为基类)中,增加一个保护类型的方法A返回View,并且将该base_tab布局文件转化为View,再将上面的方法A使用addView()添加在View里面。
3、在HomeTabController中调用方法A。
———TabController.java———
package huaxa.it.zhihuidemo.base; import huaxa.it.zhihuidemo.R; import android.content.Context; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.TextView; /** * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.base * @类名: TabController * @创建者: 黄夏莲 * @创建时间: 2016年10月7日 ,下午3:55:14 * * @描述: Tab页面对应的控制器 */ public abstract class TabController { protected View mRootView; protected Context mContext; protected ImageButton mIbMenu; protected TextView mTvTitle; protected FrameLayout mContentContainer; public TabController(Context context) { mRootView = initView(context);// 保存下View this.mContext = context; } /** * 初始化视图 * * @return */ private View initView(Context context) { //增加了此处 View view = View.inflate(context, R.layout.base_tab, null); mIbMenu = (ImageButton) view.findViewById(R.id.tab_ib_menu); mTvTitle = (TextView) view.findViewById(R.id.tab_tv_title); mContentContainer = (FrameLayout) view.findViewById(R.id.tab_container_content); // 初始化内容的View mContentContainer.addView(initContentView(context)); return view; }; //增加了此处 /** * 初始化内容的View */ protected abstract View initContentView(Context context); public View getRootView() { return mRootView;// 将View暴露出去 } /** * 获取上下文 */ public Context getContext() { return mContext; } /** * 初始化数据的方法,孩子如果有数据初始化,就复写 */ public void initData() { } }
———HomeTabController.java———
package huaxa.it.zhihuidemo.base.tab; import android.content.Context; import android.graphics.Color; import android.view.Gravity; import android.view.View; import android.widget.TextView; import huaxa.it.zhihuidemo.base.TabController; /** * @项目名: ZhiHuiDemo * @包名: huaxa.it.zhihuidemo.base.tab * @类名: HomeTabController * @创建者: 黄夏莲 * @创建时间: 2016年10月7日 ,下午4:28:04 * * @描述: 首页对应的controller */ public class HomeTabController extends TabController { private TextView text; public HomeTabController(Context context) { super(context); } //修改了此处 protected View initContentView(Context context) { text = new TextView(context); text.setTextColor(Color.RED); text.setTextSize(24); text.setGravity(Gravity.CENTER); return text; } @Override public void initData() { text.setText("首页的内容"); } }
——base_tab.java——
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/title_red_bg" > <ImageButton android:id="@+id/tab_ib_menu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:background="@android:color/transparent" android:src="@drawable/img_menu" /> <TextView android:id="@+id/tab_tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="@string/zhihuibeijing" android:textColor="@color/white" android:textSize="24sp" /> </RelativeLayout> <FrameLayout android:id="@+id/tab_container_content" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout>
相关文章推荐
- 智慧北京:内容页面tab的切换的实现
- 4+1视图与UML对应关系 .
- 智慧北京3
- 智慧北京:handler机制
- 主要的动态视图对应的基表
- 智慧北京开发第一天(下)
- ViewPager+Fragment支持导航滑动以及点击切换,触发替换某个tab对应的fragment
- Android之智慧北京一
- iOS学习之Tab Bar的使用和视图切换
- 智慧北京项目总结
- 使用Tab Bar切换视图
- 智慧北京:引导页面动态点的实现
- hibernate应用篇——视图查询/VO对应的查询
- spring mvc 一个controlller对应多个请求 其中包含 不同请求对应不同目录下的不同视图
- jquery 页面滚动tab自动定位,tab与内容对应
- 使用Tab Bar切换视图
- Oracle视图user_tab_modifications
- 我在使用AndroidStudio模仿智慧北京时遇到的问题及解决办法
- 智慧北京开发第二天(上)
- TabLayout两种添加tab方式,结合ViewPager+Fragment实现常见界面视图