ActionBar

来源:互联网 发布:ray面膜 知乎 编辑:程序博客网 时间:2024/05/29 09:27

1去掉标题栏,一定要在setContentView之前写
requestWindowFeature(Window.FEATURE_NO_TITLE);

2 】getActionBar()获取ActionBar对象
】bar.show();显示
】bar.hide();隐藏
// 设置ActionBar的自定义布局可用.
// bar.setDisplayShowCustomEnabled(true);
// 自定义ActionBar的布局.需要和setDisplayShowCustomEnabled()一起使用
// bar.setCustomView(resId);
// 设置ActionBar的标题不可用
bar.setDisplayShowTitleEnabled(false);
// 设置logo图标可用
bar.setDisplayUseLogoEnabled(true);
// 设置显示Home菜单.
bar.setDisplayShowHomeEnabled(true);
// 使得Home菜单可用.
bar.setHomeButtonEnabled(true);
】android.R.id.home ——-ActionBar上home键id,要在菜单监听事件中响应

3 使用Split action bar
在屏幕很窄时(如在portra模式),使用Split action bar可以将所有的action显示在屏幕底部
】在清单文件中的Activity标签设置属性
android:uiOptions=”splitActionBarWhenNarrow”

    4 在ActionBar中使用SearchView  第一步,在item中关联actionViewClass<item    android:id="@+id/actionbar_search"     android:showAsAction="ifRoom"    android:title="搜索"    android:actionViewClass="android.widget.SearchView"/>只能手写第二步,在onCreateOptionsMenu中找到SearchView并设置监听MenuItem item=menu.findItem(R.id.actionbar_search);        SearchView sv=(SearchView) item.getActionView();        sv.setOnQueryTextListener(new OnQueryTextListener() {            @Override            public boolean onQueryTextSubmit(String query) {                return false;            }            @Override            public boolean onQueryTextChange(String newText) {                tv.setText(newText);//              Toast.makeText(getApplicationContext(), newText, 0).show();                return false;            }        });5 在ActionBar中使用分享功能第一步: 在item中关联actionProviderClas    <item        android:id="@+id/share"        android:showAsAction="ifRoom"        android:title="分享"        android:actionProviderClass="android.widget.ShareActionProvider"/>第二步: 在onCreateOptionsMenu中找到ShareActionProvider进行分享功能的设置getMenuInflater().inflate(R.menu.main,menu);        MenuItem item=menu.findItem(R.id.share);        ShareActionProvider ap=(ShareActionProvider) item.getActionProvider();        Intent intent=new Intent();        intent.setAction(Intent.ACTION_SEND);        intent.setType("text/plain");        intent.putExtra(Intent.EXTRA_TEXT, "穿过来的数据");            //通过setShareIntent开启数据的共享        ap.setShareIntent(intent);】如果要在自己其它的应用A也想分享该应用B的数据,需要在A的配置文件中过滤相同Intent属性  <intent-filter >                <action android:name="android.intent.action.SEND"/>                <data android:mimeType="text/plain"/>            </intent-filter>6 使用ActionBar向上导航(跳转到指定Activity,)】注意:比如A-B-C-D依次跳转,只能是下一级Activity向上跳转,      如 D—A 】使用步骤1: //在D中设置向上导航可用        bar.setDisplayHomeAsUpEnabled(true);步骤2:在D的清单文件中设置父Activity android:parentActivityName="com.example.demo.A"7 使用ActionBar实现Tab导航】步骤    //获取ActionBar对象        ActionBar bar = getActionBar();        // 导航模式:必须设置.        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        // 获取tab标签        Tab tab1 = bar.newTab();        // 添加标题        tab1.setText("爱情片");        // 添加页签的图片        tab1.setIcon(R.drawable.ic_launcher);        // tab必须添加监听        tab1.setTabListener(this);        // 添加标签        bar.addTab(tab1);        bar.addTab(bar.newTab().setText("动作片").setTabListener(this));/************************** TabListener的监听方法 *************************************/    // 当tab被选择的时候调用.tab:当前被选择的标签;ft:用来管理fragment的事务.    @Override    public void onTabSelected(Tab tab, FragmentTransaction ft) {        MyFragment fragment = new MyFragment();        Bundle args = new Bundle();        // tab.getPosition():获取tab所在的位置.从0开始.        args.putInt("position", tab.getPosition());        fragment.setArguments(args);        //ft.add(R.id.ll_container, fragment);        ft.replace(R.id.ll_container, fragment);    }8 在ActionBar中使用List导航    List<String> l=new ArrayList();        l.add("list1");        l.add("list2");        l.add("list3");        ActionBar bar=getActionBar();        //设置导航模式为List        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        //填充适配器        ArrayAdapter<String> adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,l);        //设置监听              bar.setListNavigationCallbacks(adapter, new OnNavigationListener() {            @Override            public boolean onNavigationItemSelected(int itemPosition, long itemId) {                return false;            }        });
0 0