Android-在动作栏中添加和删除选项卡
2016-03-18 23:22
387 查看
动作栏提供基于选项卡模式的导航方式,它允许用户在一个Activity中,切换不同Framement。同时,针对用户选择选项卡事件,还专门定义了一个事件监听器。
在ActionBar类中,与Tab相关的常用方法如下:
增加选项卡:add Tab
Public abstract void addTab(ActionBar.Tab tab)
获得当前选择的选项卡:getSelectedTab
Public abstract ActionBar.Tab getSelectedTab()
用来获得指定索引位置的选项卡:getTabAt
Public abstract ActionBar.Tab getTabAt(int index)
获得选项卡的个数:getTabCount
Public abstract int getTabCount()
设置选项卡被选中:selectTab
Public abstract void selectTab(ActionBar.Tab tab)
在ActionBar类中,定义了一个内部接口TabListener,用来处理动作栏上选项卡相关事件,定义方法如下:
Public abstract void onTabReselected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理选项卡再次被选中事件
Public abstract void onTabSelected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理选项卡选中事件
Public abstract void onTabUnselected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理退出选择状态选项卡事件
Process:
1.Edit res/layout/mainactivity.xml file, add a for displaying the content of Fragment. Then, add a . Add two buttons in it and change the default property.
2.Create tab_content.xml in /res/layout package, including a TextView
3.Create ActionBarTabsActivity class which extends Activity class. In the method onCreate(), achieve button controls and implement the function of adding and deleteing Tabs. Create MyTabListener inner class to deal with Tabs events and TabContentFragment to implement custom Fragment.
在ActionBar类中,与Tab相关的常用方法如下:
增加选项卡:add Tab
Public abstract void addTab(ActionBar.Tab tab)
获得当前选择的选项卡:getSelectedTab
Public abstract ActionBar.Tab getSelectedTab()
用来获得指定索引位置的选项卡:getTabAt
Public abstract ActionBar.Tab getTabAt(int index)
获得选项卡的个数:getTabCount
Public abstract int getTabCount()
设置选项卡被选中:selectTab
Public abstract void selectTab(ActionBar.Tab tab)
在ActionBar类中,定义了一个内部接口TabListener,用来处理动作栏上选项卡相关事件,定义方法如下:
Public abstract void onTabReselected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理选项卡再次被选中事件
Public abstract void onTabSelected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理选项卡选中事件
Public abstract void onTabUnselected(ActionBar.Tab tab,FragmentTransaction ft)
用于处理退出选择状态选项卡事件
Process:
1.Edit res/layout/mainactivity.xml file, add a for displaying the content of Fragment. Then, add a . Add two buttons in it and change the default property.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/background" android:orientation="vertical" android:baselineAligned="false" > <FrameLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > <Button android:id="@+id/add_tab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/add_tab" android:textColor="@android:color/white" android:textSize="20dp" /> <Button android:id="@+id/remove_tab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/remove_tab" android:textColor="@android:color/white" android:textSize="20dp" /> </LinearLayout> </LinearLayout>
2.Create tab_content.xml in /res/layout package, including a TextView
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="@android:color/white" android:textSize="20dp" > </TextView>
3.Create ActionBarTabsActivity class which extends Activity class. In the method onCreate(), achieve button controls and implement the function of adding and deleteing Tabs. Create MyTabListener inner class to deal with Tabs events and TabContentFragment to implement custom Fragment.
public class ActionBarTabsActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// 调用父类方法 setContentView(R.layout.main);// 应用布局文件 final ActionBar bar = getActionBar();// 获得动作栏 bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 设置动作栏导航模式 Button addTab = (Button) findViewById(R.id.add_tab); addTab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String title = "选项卡:" + bar.getTabCount();// 定义选项卡标题 Tab tab = bar.newTab();// 新建选项卡 tab.setText(title);// 设置选项卡标题 tab.setTabListener(new MyTabListener(new TabContentFragment(title)));// 设置选项卡事件监听器 bar.addTab(tab);// 增加选项卡 } }); Button removeTab = (Button) findViewById(R.id.remove_tab); removeTab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bar.removeTabAt(bar.getTabCount() - 1);// 删除最后一个选项卡 } }); } private class MyTabListener implements TabListener { private TabContentFragment fragment; public MyTabListener(TabContentFragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) {// 处理选择选项卡事件 ft.add(R.id.frameLayout, fragment);// 增加Fragment } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) {// 处理不选择选项卡事件 ft.remove(fragment);// 移除Fragment } } private class TabContentFragment extends Fragment { private String message; public TabContentFragment(String message) { this.message = message;// 获得需要显示的字符串 } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View fragView = inflater.inflate(R.layout.tab_content, container, false); TextView text = (TextView) fragView.findViewById(R.id.content);// 获得文本框控件 text.setText(message);// 显示字符串 return fragView;// 返回视图 } } }
相关文章推荐
- Android中四大组件总结
- Android——Activity和Intent及Activity的生命周期
- 下载APK,检测APK是否安装,检测程序是否运行
- android中的Binder(android内核学习记录)
- 状态模式与android状态机
- AlarmManager系统闹钟
- Android Broadcast------详解广播机制
- Android中内容提供者ContentProvider的详解
- Android 滑动星星选择答案
- Android PopupWindow 简单之用法
- android ExpandableListView简单应用及listview模拟ExpandableListView
- Android动态部署三:如何从插件apk中启动Activity(-)
- [android] 字符乱码问题的处理
- Android四种跨进程通信
- android broadcastReceiver学习
- android studio NDK-JNI调用
- ionic 中的popover 在ios android上的样式 不同解决办法
- Android 自定义Camera(一)
- Android使用sd卡保存读取数据
- android学习——activity实现动画切换