ActionBar下拉式导航
2016-09-18 14:40
267 查看
第一步:编写布局文件:
<?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="horizontal"
android:id="@+id/container">
</LinearLayout>第二步:编写Activity代码:
public class DropdownTabActivity extends Activity implements ActionBar.OnNavigationListener{
private static final String SELECTED_ITEM = "selected_item";
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
actionBar = getActionBar();
// 设置ActionBar显示标题
actionBar.setDisplayShowTitleEnabled(true);
// 设置ActionBar的导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
android.R.id.text1,new String[]{"第一页","第二页","第三页"}),this);
}
// 当点击一个Tab选项时触发
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Fragment fragment = new DummyFragment();
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER,itemPosition+1);
fragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container,fragment);
transaction.commit();
return false;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 将已选择的ActionBar的索引值存到Bundle数据中KEY为SELECTED_ITEM中去
outState.putInt(SELECTED_ITEM,getActionBar().getSelectedNavigationIndex());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 设置ActionBar的导航索引值
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(SELECTED_ITEM));
}
}其中 DummyFragment代码如下:
public class DummyFragment extends Fragment {
public final static String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.START);
Bundle args = getArguments();
textView.setText(args.getInt(ARG_SECTION_NUMBER)+"");
textView.setTextSize(28);
return textView;
}
}
运行效果如下:
<?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="horizontal"
android:id="@+id/container">
</LinearLayout>第二步:编写Activity代码:
public class DropdownTabActivity extends Activity implements ActionBar.OnNavigationListener{
private static final String SELECTED_ITEM = "selected_item";
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
actionBar = getActionBar();
// 设置ActionBar显示标题
actionBar.setDisplayShowTitleEnabled(true);
// 设置ActionBar的导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
android.R.id.text1,new String[]{"第一页","第二页","第三页"}),this);
}
// 当点击一个Tab选项时触发
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Fragment fragment = new DummyFragment();
Bundle args = new Bundle();
args.putInt(DummyFragment.ARG_SECTION_NUMBER,itemPosition+1);
fragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container,fragment);
transaction.commit();
return false;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 将已选择的ActionBar的索引值存到Bundle数据中KEY为SELECTED_ITEM中去
outState.putInt(SELECTED_ITEM,getActionBar().getSelectedNavigationIndex());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 设置ActionBar的导航索引值
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(SELECTED_ITEM));
}
}其中 DummyFragment代码如下:
public class DummyFragment extends Fragment {
public final static String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.START);
Bundle args = getArguments();
textView.setText(args.getInt(ARG_SECTION_NUMBER)+"");
textView.setTextSize(28);
return textView;
}
}
运行效果如下:
相关文章推荐
- 解决Android Studio加载第三方jar包,出现包重复加载的问题:
- Android ListView自动显示隐藏布局的实现方法
- Android自定义Dialog
- android中尺寸转化
- android中和屏幕相关的操作
- 自定义控件之绘图篇(二):路径及文字 一目了然 ,适合初学者
- Android 自定义view及其属性。友情链接底部有动画链接
- 如何用Android studio构建项目
- Android基础学习【历史流程重走】 ----四大组件之Activity
- android中如何去掉标题栏
- Android中的何为Context
- Android-多级列表-popupWindow
- 【Android】Android布局中实现圆角边框
- Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)
- Android 系统自带输入法的表情显示 -项目总结
- android开发仿IOS滑动开关
- EditText实现“眼睛”效果
- Android设计模式之 工厂方法模式
- 修复Android中Navigation Bar遮挡PopupWindow的问题
- Android抖动动画的实现与思考