package com.example.view3;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
public class ActionBarTabActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_action_bar_tab);
//效果
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
final ActionBar bar = getActionBar();
bar.setDisplayHomeAsUpEnabled(true); //设置图标可回到主页
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//设置菜单显示模式
//准备几个tab
prepareMyTab();
//注册长按组件
registerForContextMenu(findViewById(R.id.longtime));
}
/**
* 加载上下文菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_bar_tab, menu);
//用代码控制菜单,没有给id ,则id 默认为0
/*menu.add("增加").
setIcon(android.R.drawable.ic_menu_add).
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("修改").
setIcon(android.R.drawable.ic_menu_edit).
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("保存").
setIcon(android.R.drawable.ic_menu_save).
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("另存为").
setIcon(android.R.drawable.ic_menu_camera).
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);*/
return super.onCreateOptionsMenu(menu);
}
/** 上下文菜单选中事件 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Toast.makeText(ActionBarTabActivity.this, "你选择了菜单id:"+item.getItemId()+"title:"+item.getTitle(), Toast.LENGTH_SHORT).show();
//比较选择了哪个ID
switch (item.getItemId()) {
case R.id.update:
item.setIntent(new Intent(ActionBarTabActivity.this,MainActivity.class));
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
/** ---------长按弹出菜单 -----*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.action_bar_tab,menu); //加载长按信息
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Toast.makeText(ActionBarTabActivity.this, "你选择了菜单id:"+item.getItemId()+"title:"+item.getTitle(), Toast.LENGTH_SHORT).show();
return super.onContextItemSelected(item);
}
//准备tab
private void prepareMyTab() {
String titles[]={"Android学习","java学习","数据结构算法"};
final ActionBar bar = getActionBar();
//bar.removeTabAt(1); 删除索引的tab
//bar.getTabCount();获得当前tab 的个数
for (int j = 0; j < titles.length; j++) {
bar.addTab(bar.newTab().setText(titles[j]).setTabListener(new TabListener() {
TabContentFragment mFragment;//准备一个Fragment
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override //选中选项卡的时候
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//添加
mFragment=new TabContentFragment(tab.getPosition());//要找第几个含framenttestlayout的fragment
ft.replace(R.id.fragment_content, mFragment, "tab"+tab.getPosition()); //第三个参数是起标志作用
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
Toast.makeText(ActionBarTabActivity.this, "你选择了:"+tab.getText(), 0).show();
}
}));
}
}
/** 准备个fragment*/
@SuppressLint("ValidFragment")
public static class TabContentFragment extends Fragment {
private int resourceIndex; //布局文件的索引
private int resources[]={R.layout.fragmenttest,R.layout.fragmenttest1,R.layout.fragmenttest2}; //三个布局
//构造
public TabContentFragment() {}
public TabContentFragment(int resourceIndex) {
this.resourceIndex = resourceIndex;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fragView = inflater.inflate(resources[resourceIndex], container, false);
return fragView;
}
}
//切换显示模式
public void changeShow(View v){
final ActionBar bar = getActionBar();
if(bar.getNavigationMode()==ActionBar.NAVIGATION_MODE_TABS)
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
else
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}
//单击弹出菜单
public void clickShowMenu(View v){
PopupMenu pm=new PopupMenu(ActionBarTabActivity.this, v);
getMenuInflater().inflate(R.menu.main, pm.getMenu());
pm.show();
}
}
<LinearLayout xmlns: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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ActionBarTabActivity"
android:orientation="vertical">
<FrameLayout android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content" android:layout_gravity="center_horizontal"
android:layout_height="wrap_content" android:id="@+id/longtime"
android:text="我的dialog练习(长按我)"/>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点我显示菜单"
android:onClick="clickShowMenu"/>
<ToggleButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOn="切换显示模式1"
android:textOff="切换显示模式2"
android:onClick="changeShow" />
</LinearLayout>
</LinearLayout>