码迷,mamicode.com
首页 > 其他好文 > 详细

actionView

时间:2015-09-19 22:35:04      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

类似于actionBar也是在导航栏里用但是他使用的是menu菜单设置菜单项的AsAction=“always|withText”

本例使用LoaderCallbacks<Cursor>接口回调

使用菜单项

技术分享
  1 import java.io.File;
  2 import java.io.UnsupportedEncodingException;
  3 import java.net.URLEncoder;
  4 
  5 import android.app.ActionBar;
  6 import android.app.ActionBar.Tab;
  7 import android.app.ActionBar.TabListener;
  8 import android.app.Activity;
  9 import android.app.FragmentTransaction;
 10 import android.content.Intent;
 11 import android.net.Uri;
 12 import android.os.Bundle;
 13 import android.util.Log;
 14 import android.view.Menu;
 15 import android.view.MenuItem;
 16 
 17 /**
 18  * 使用ActionBar的Tab导航
 19  * 1)设置ActionBar的导航的模式为TABS
 20  * 2)当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件)
 21  * 3)通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
 22  * 4)通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
 23  * 5)在Tab选择事件方法中,动态地显示Fragment
 24  * 
 25  * @author apple
 26  *
 27  */
 28 public class MainActivity extends Activity implements TabListener{
 29 
 30     private ActionBar actionBar;
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         setContentView(R.layout.activity_main);
 35         
 36         initActionBar();
 37     }
 38 
 39     private void initActionBar() {
 40         // TODO 初始化ActionBar中的相关设置
 41         actionBar=getActionBar();//获取ActionBar对象
 42         
 43         //1. 设置ActionBar的导航模式: tab选项卡的导航模式
 44         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 45         
 46         //3. 创建Tab
 47         Tab tab1=actionBar.newTab()
 48                          .setText("头条")
 49                          .setIcon(android.R.drawable.ic_menu_add)
 50                          .setTabListener(this);
 51         
 52         Tab tab2=actionBar.newTab()
 53                  .setText("军事")
 54                  .setIcon(android.R.drawable.ic_menu_agenda)
 55                  .setTabListener(this);
 56         
 57         Tab tab3=actionBar.newTab()
 58                  .setText("国内")
 59                  .setIcon(android.R.drawable.ic_menu_delete)
 60                  .setTabListener(this);
 61         
 62         Tab tab4=actionBar.newTab()
 63                  .setText("国际")
 64                  .setIcon(android.R.drawable.ic_menu_camera)
 65                  .setTabListener(this);
 66         
 67         Tab tab5=actionBar.newTab()
 68                  .setText("体育")
 69                  .setIcon(android.R.drawable.ic_menu_compass)
 70                  .setTabListener(this);
 71         
 72         //4. 增加Tab到ActionBar中
 73         actionBar.addTab(tab1);
 74         actionBar.addTab(tab2);
 75         actionBar.addTab(tab3);
 76         actionBar.addTab(tab4);
 77         actionBar.addTab(tab5);
 78     }
 79 
 80     @Override
 81     public void onTabSelected(Tab tab, FragmentTransaction ft) {
 82         // TODO 选择Tab事件
 83         Log.i("info", "onTabSelected-----"+tab.getPosition());
 84         
 85         ContentFragment cf=
 86                 ContentFragment.newInstace(tab.getText().toString());
 87         
 88         ft.replace(R.id.mainLayoutId, cf);
 89         
 90     }
 91 
 92     @Override
 93     public void onTabUnselected(Tab tab, FragmentTransaction ft) {
 94         // TODO 取消选择Tab事件
 95         Log.i("info", "onTabUnselected-----"+tab.getPosition());
 96     }
 97 
 98     @Override
 99     public void onTabReselected(Tab tab, FragmentTransaction ft) {
100         // TODO 重新选择Tab事件
101         Log.i("info", "onTabReselected-----"+tab.getPosition());
102         
103     }
104     
105     @Override
106     public boolean onCreateOptionsMenu(Menu menu) {
107         getMenuInflater().inflate(R.menu.main, menu);
108         return super.onCreateOptionsMenu(menu);
109     }
110     
111     @Override
112     public boolean onOptionsItemSelected(MenuItem item) {
113         if(item.getItemId()==R.id.action_share){
114             
115             try {
116                 String info="给您推荐一本新的学习资料:http://www.baidu.com/"
117                         +URLEncoder.encode("Android5.0大全","utf-8"); 
118                 //说明:使用URLEncoder工具类,将url请求中包含中文的信息转化unicode编码
119                 
120                 Intent intent=new Intent(Intent.ACTION_SEND);
121                 intent.setType("text/*"); //设置分享的内容类型为文本类型
122 //                File imgFile=null;
123 //                intent.setDataAndType(Uri.parse(imgFile.getAbsolutePath()), "image/*");
124                 intent.putExtra(Intent.EXTRA_TEXT, info);//设置分享的内容
125                 
126                 startActivity(intent);//开始分享
127                 
128             } catch (UnsupportedEncodingException e) {
129                 e.printStackTrace();
130             }
131             
132             
133         }
134         return super.onOptionsItemSelected(item);
135     }
136     
137 }
MainActivity.java
技术分享
 1 import android.app.ListFragment;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.ArrayAdapter;
 5 import android.widget.ListView;
 6 
 7 public class ContentFragment extends ListFragment {
 8 
 9     private String title; //传入当前Fragment中的参数
10     
11     private ArrayAdapter<String> adapter;
12     
13     //声明静态工厂方法
14     public static ContentFragment newInstace(String title){
15         
16         ContentFragment cf=new ContentFragment();
17         Bundle args=new Bundle();
18         args.putString("title",title);
19         
20         cf.setArguments(args);//设置要传入Fragment中的参数
21         
22         return cf;
23     }
24     
25     @Override
26     public void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         
29         //获取传入的参数
30         title=getArguments().getString("title");
31         
32         adapter=new ArrayAdapter<String>(getActivity().getApplicationContext(),
33                     R.layout.item_content);
34         
35         //初始化数据源
36         for(int i=0;i<20;i++)
37             adapter.add(title+"--"+i);
38         
39     }
40     
41     @Override
42     public void onActivityCreated(Bundle savedInstanceState) {
43         // TODO 归属的Activity的onCreate()初始化方法执行完成
44         super.onActivityCreated(savedInstanceState);
45         
46         //设置当前Fragment中ListView控件的适配器
47         setListAdapter(adapter);
48     }
49     
50     @Override
51     public void onListItemClick(ListView l, View v, int position, long id) {
52         // TODO ListView中的Item点击事件方法
53         //设置当前归属Activity的标题为点击item的内容
54         
55         getActivity().setTitle(adapter.getItem(position));
56     }
57     
58 }
ContentFragment
技术分享
 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
 2 
 3     <!-- actionViewClass 设置ActionView控件的UI类 -->
 4     <item
 5         android:id="@+id/action_search"
 6         android:orderInCategory="100"
 7         android:showAsAction="ifRoom"
 8         android:actionViewClass="android.widget.SearchView"
 9         android:title="检索"/>
10 
11     <!-- actionLayout 属性设置自定义ActionView的布局文件 -->
12      <item
13         android:id="@+id/action_search_custom"
14         android:orderInCategory="100"
15         android:showAsAction="always|collapseActionView"
16         android:actionLayout="@layout/actionview_search"
17         android:icon="@android:drawable/ic_menu_agenda"
18         android:title="自定义检索"/>
19     
20 </menu>
menu_main

注意这里使用的碎片是ListFragment他可以实现onScrollListener  重写其中的方法 不过最终还得getListView().setOnScrollListener(this);  一般是在onActivityCreated()中实现绑定

actionView

标签:

原文地址:http://www.cnblogs.com/bimingcong/p/4822301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!