actionView
类似于actionBar也是在导航栏里用但是他使用的是menu菜单设置菜单项的AsAction=“always|withText”
本例使用LoaderCallbacks<Cursor>接口回调
使用菜单项
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem; /**
* 使用ActionBar的Tab导航
* 1)设置ActionBar的导航的模式为TABS
* 2)当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件)
* 3)通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
* 4)通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
* 5)在Tab选择事件方法中,动态地显示Fragment
*
* @author apple
*
*/
public class MainActivity extends Activity implements TabListener{ private ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initActionBar();
} private void initActionBar() {
// TODO 初始化ActionBar中的相关设置
actionBar=getActionBar();//获取ActionBar对象 //1. 设置ActionBar的导航模式: tab选项卡的导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //3. 创建Tab
Tab tab1=actionBar.newTab()
.setText("头条")
.setIcon(android.R.drawable.ic_menu_add)
.setTabListener(this); Tab tab2=actionBar.newTab()
.setText("军事")
.setIcon(android.R.drawable.ic_menu_agenda)
.setTabListener(this); Tab tab3=actionBar.newTab()
.setText("国内")
.setIcon(android.R.drawable.ic_menu_delete)
.setTabListener(this); Tab tab4=actionBar.newTab()
.setText("国际")
.setIcon(android.R.drawable.ic_menu_camera)
.setTabListener(this); Tab tab5=actionBar.newTab()
.setText("体育")
.setIcon(android.R.drawable.ic_menu_compass)
.setTabListener(this); //4. 增加Tab到ActionBar中
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
actionBar.addTab(tab4);
actionBar.addTab(tab5);
} @Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO 选择Tab事件
Log.i("info", "onTabSelected-----"+tab.getPosition()); ContentFragment cf=
ContentFragment.newInstace(tab.getText().toString()); ft.replace(R.id.mainLayoutId, cf); } @Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO 取消选择Tab事件
Log.i("info", "onTabUnselected-----"+tab.getPosition());
} @Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO 重新选择Tab事件
Log.i("info", "onTabReselected-----"+tab.getPosition()); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==R.id.action_share){ try {
String info="给您推荐一本新的学习资料:http://www.baidu.com/"
+URLEncoder.encode("Android5.0大全","utf-8");
//说明:使用URLEncoder工具类,将url请求中包含中文的信息转化unicode编码 Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/*"); //设置分享的内容类型为文本类型
// File imgFile=null;
// intent.setDataAndType(Uri.parse(imgFile.getAbsolutePath()), "image/*");
intent.putExtra(Intent.EXTRA_TEXT, info);//设置分享的内容 startActivity(intent);//开始分享 } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} }
return super.onOptionsItemSelected(item);
} }
MainActivity.java
import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class ContentFragment extends ListFragment { private String title; //传入当前Fragment中的参数 private ArrayAdapter<String> adapter; //声明静态工厂方法
public static ContentFragment newInstace(String title){ ContentFragment cf=new ContentFragment();
Bundle args=new Bundle();
args.putString("title",title); cf.setArguments(args);//设置要传入Fragment中的参数 return cf;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //获取传入的参数
title=getArguments().getString("title"); adapter=new ArrayAdapter<String>(getActivity().getApplicationContext(),
R.layout.item_content); //初始化数据源
for(int i=0;i<20;i++)
adapter.add(title+"--"+i); } @Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO 归属的Activity的onCreate()初始化方法执行完成
super.onActivityCreated(savedInstanceState); //设置当前Fragment中ListView控件的适配器
setListAdapter(adapter);
} @Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO ListView中的Item点击事件方法
//设置当前归属Activity的标题为点击item的内容 getActivity().setTitle(adapter.getItem(position));
} }
ContentFragment
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- actionViewClass 设置ActionView控件的UI类 -->
<item
android:id="@+id/action_search"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView"
android:title="检索"/>
<!-- actionLayout 属性设置自定义ActionView的布局文件 -->
<item
android:id="@+id/action_search_custom"
android:orderInCategory="100"
android:showAsAction="always|collapseActionView"
android:actionLayout="@layout/actionview_search"
android:icon="@android:drawable/ic_menu_agenda"
android:title="自定义检索"/>
</menu>
menu_main
注意这里使用的碎片是ListFragment他可以实现onScrollListener 重写其中的方法 不过最终还得getListView().setOnScrollListener(this); 一般是在onActivityCreated()中实现绑定
actionView的更多相关文章
- FATAL: ActionView::Template::Error (application.css isn't precompiled):
iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/logs/m]13:02 [root@a02.cmsapi$ tail thin\ server\ \(0.0.0. ...
- gitlab ActionView::Template::Error (undefined method `[]' for nil:NilClass): 500错误
Started GET "/mygroup/myproject/tree/master/MyDirectory" for 127.0.0.1 at 2014-10-22 22:42 ...
- Android学习笔记ActionView
概念 案例 1.布局文件 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...
- Android(2)—Mono For Android App版本自动更新
0.前言 公司Android查询的项目已经开始,整体采用Java后台+App前台来实现,由于项目小,App这块就我一个人开发,首先需要研究的是:Android版本的更新升级问题:本人经过近一周的学习整 ...
- 将语音搜索集成到Google Now中
原文标题:Use Voice Search to integrate with Google Now 原文链接:http://antonioleiva.com/voice_search_google_ ...
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)
环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...
- RubyOnRails local_assigns
http://api.rubyonrails.org/classes/ActionView/Template.html#method-i-local_assigns Returns a hash wi ...
- Rails sanitize
The SanitizeHelper module provides a set of methods for scrubbing text of undesired HTML elements. T ...
- YII 的源码分析(三)
前面已经看完了启动一个yii程序所要经过的流程,以及渲染一个页面是怎么完成的.今天要分析的是yii是如何处理用户请求的.也就是控制和动作部分. 还是以helloworld为例演示这一过程.我们在地址栏 ...
随机推荐
- LayUI——数据表格使用
Layui数据表格的实际项目使用 Layui的数据表格可谓是在后台管理的页面中经常用到的工具了 最近做项目就用到了,项目的要求是用数据表格显示出后台文章的列表并且每一行的文章都有对应的修改删除操作按钮 ...
- MySql 链接字符串
MySql连接字符串总结 1.本地数据库连接 <connectionStrings> <add name="ConnectionString" ...
- 杂: PYTHON上数据储存:推荐h5py
一篇很短的小短文,主要推荐下做科学计算是大量数据的储存问题 最近在做一个CNN的项目,文件夹里有20w张图片要读入并保存到一个data文件(不然每次都读20w文件太麻烦). 折腾了一个下午,发现了一个 ...
- multiprocess模块---进程---进程队列
首先明白几个概念: 同步:做完一件事情,再做另外一件事情 异步:做一件事情的时候,可以再做另外一件事情 阻塞:recv sleep accept input recvfrom 非阻塞:没有遇见上面这 ...
- leetcode263
public class Solution { private bool Judge(int x) { ) { return false; } int bound = Convert.ToInt32( ...
- shiro用authc配置后登录成功后不能跳转到index页面
转自:https://ydoing.iteye.com/blog/2248188
- testng报告发邮件后css样式缺失问题
问题:用reportng把代替testng报告后,邮件中不显示html样式 解决方案:把依赖的文件,加到邮件附件 Jenkins发邮件的时候,把依赖文件作为附件发送. 结果看到样式了:
- maven错误
maven-enforcer-plugin (goal "enforce") is ignored by m2e. Plugin execution not covered by ...
- VBA 使用QueryTables 中文乱码的处理
一般情况: cnn = "OLEDB;Provider=IBMDA400;Data Source=TFB4001;User ID=;Password=;" Sql = " ...
- 基于OpenGL编写一个简易的2D渲染框架-10 重构渲染器-Pass
Pass,渲染通路,一个渲染通路指的是一次像素处理和一次顶点处理,也就是指的是一次绘制.简单来说就是顶点数据在渲染管线中走一遍最后绘制. 渲染粒子系统的粒子时,需要开启 OpenGL 的混合模式,并使 ...