Pro Android学习笔记 ActionBar(1):Home图标区



Pro Android学习笔记(四八):ActionBar(1):Home图标区

2013年03月10日
? 综合 ? 共 3256字 ? 字号 小 中 大 ? 评论关闭

ActionBar在Android 3.0 SDK中为平板引入,在4.0中也可以在phone中使用。在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小例子中进行示范。

Home Icon

在Action Bar的最左边,就是Home icon和标题的区域,如上图红圈内。在Home icon的左边有一个返回的的左箭头,通常我们点击这个区域,将回到应用的主activity中。图中的activity是通过主activity的菜单触发,之前已经多次使用,不在重复。activity的layout很简单,只有一个textview在LinearLayout中,其代码如下:

源代码

public class HomePressTestCase1 extends Activity{

private TextView tv = null;

private ActionBar  bar = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.basic_test);

tv = (TextView)findViewById(R.id.textViewId);

tv.setMovementMethod(ScrollingMovementMethod.getInstance());//设置TextView内容过多时,可以通过鼠标进行滚动

tv.setText("");

//在android 4.0后,缺省是不监听Home icon动作,要有效使用,必须进行下面的设置

bar = getActionBar();  //获取ActionBar的对象,从这个方法也可知action bar是activity的一个属性

bar.setDisplayHomeAsUpEnabled(true);

//显示返回的箭头,并可通过onOptionsItemSelected()进行监听,其资源ID为android.R.id.home。

        // bar.setHomeButtonEnabled(true); //不显示箭头符号,允许通过onOptionsItemSelected()进行箭头,但一般的情况下,还是应该给个箭头提示给用户。

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId()){

case android.R.id.home:
//对用户按home icon的处理,本例只需关闭activity,就可返回上一activity,即主activity。

showInfo("Home is press");

finish();

return true;

default:

break;

}

return super.onOptionsItemSelected(item);

}

protected void showInfo(String s){

tv.setText(s + "\n" + tv.getText());

Log.d(getLocalClassName(),s);

}

}

TextView的滚动

我们可以将整个layout设置为ScrollView,但是TextView本身可以设置滚动,在xml中相关的属性如下。并在代码中通过setMovementMethod(ScrollingMovementMethod.getInstance()
)使之有效。

<TextView android:id="@+id/textViewId"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical"
    android:scrollbarStyle="insideOverlay"
    android:scrollbarSize="25dip"
    android:scrollbarFadeDuration="0"
    />

返回主activity或指定activity

如果上一activity并非主activity,而我们有希望直接返回主activity,可以如下处理:

public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId()){

case android.R.id.home:

showInfo("Home is pressed");

Intent i = new Intent(this,MainActivity.class);

//【对于FLAG_ACTIVITY_CLEAR_TOP】:假设目前activity的task堆栈是 MainActivity –> A –> B –> 当前Activity(如果我们按返回键,则依次返回B,A,最后为MainActivity。现在intent要唤起MainActivity,发现在堆栈存在,则将其及之前的全部清楚,在唤起新的activity后,task堆栈为MainActivity。注意,通过跟踪activity的对象,将产生一个新的MainActivity的实例,不是原来的,原来的已经被干掉。又例如当前为C—>

M—>A—>B—>当前,如果打开M,则执行后,推展为C—>M。

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(i);

return true;

default:

break;

}

return super.onOptionsItemSelected(item);

}

在Android 4.1之后(API Level 16),有更方便的处理方式,在AndroidManifest.xml中设置返回的activity即可,xml的片段如下:

<activity android:name=".HomePressTestCase1" android:label="@string/test_case_1_home"

android:parentActivityName="cn.wei.flowingflying.pro.MainActivity" />

我们只需设置parentActivityName,用户按Home icon区域,不需要人工代码进行处理,就可以实现上面通过设置flag的intent代码的实现。java代码可进一步简化:

public boolean onOptionsItemSelected(MenuItem item) {

if(item.getItemId() == android.R.id.home){

showInfo("Home is press");

}

return super.onOptionsItemSelected(item);

}

Pro Android学习笔记 ActionBar(1):Home图标区,布布扣,bubuko.com

时间: 2024-10-09 02:06:40

Pro Android学习笔记 ActionBar(1):Home图标区的相关文章

【转】 Pro Android学习笔记(四九):ActionBar(2):Action图标区

目录(?)[-] ActionBar的隐藏和现实 ActionBar的action图标区 ActionBar的隐藏和现实 ActionBar bar = getActionBar();bar.hide();  //隐藏Action Barbar.show(); //显示Action Bar ActionBar的action图标区 ActionBar的右侧就是action图标区域,如下图所示 这是ActionBar的menu区域,作为options menu的一部分,选择部分的菜单项在action

【转】 Pro Android学习笔记(四八):ActionBar(1):Home图标区

目录(?)[-] Home Icon 源代码 TextView的滚动 返回主activity或指定activity ActionBar在Android 3.0 SDK中为平板引入,在4.0中也可以在phone中使用.在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小例子中进行示范. Home Icon 在Action Bar的最左边,就是Home icon和标题的区域,如上图

【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和theme有关,如果theme设置不正确,还可能会出现异常. 相关的代码如下: public class ListActionBarDemo extends SearchTestCase3 implements OnNavigationListener{ //List触发的回调函数接口    @Ov

【转】 Pro Android学习笔记(五十):ActionBar(3):搜索条

目录(?)[-] ActionBar中的搜索条 通过Menu item上定义search view 进行Searchable的配置 在activity中将search view关联searchable activity Searchable activity的代码 ActionBar中的搜索条 我们同样可以在Action Bar中嵌入搜索条.在小例子中,我们在action bar中嵌入一个搜索框的widget(称为search view).当我们输入搜索内容,能够在指定的activity中打开(

【转】 Pro Android学习笔记(五一):ActionBar(4):标准和Tab模式

之前,我们学习的Action Bar是标准模式,Tab模式的如下图所示. 对于Tab,我们在Android学习笔记(二二): 多页显示-Tag的使用中学习过,但Action Bar的tab更适合fragment的使用.我们在之前实现的标准Action Bar的基础上添加导航用的tab,代码如下: public class TabbedActionBarDemo extends SearchTestCase3 implements ActionBar.TabListener{    @Overri

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供.我们将相关信息存储在一个intent中,例如该文本的Uri.这个intent可以匹配系统的多个应用,替代菜单将这些应用一一列出,菜单项的title就是该可被调用的activity的名字,图标也为该可被调用的activity的图表. 小例子说明 我们通过一个小例子进行学习,简单地打开一个URL:we

【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续探讨BaseAdapter 我们可以同继承抽象类BaseAdapter来实现自己的Adapter,自己设置子View的UI,不同子View可以由不同的布局,并自己进行数据和子view中数据的对应关系.图是例子的呈现结果,我们有很多图标,对这些图标按一定大小进行缩放,然后布局在GridView中.这个

Pro Android学习笔记(二九):用户界面和控制(17):include和merge

xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android"     androi

【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android=