Android ActionBar的使用

一、显示和隐藏Action Bar

要使用Action Bar的全部特性,最小SDK需11以上。

查看最小sdk的方法:Gradle.Scripts中build.gradle(app)中的minSdkVersion

在MainActivity.java文件中获取当前的Action Bar:
//获取ActionBar对象
        final ActionBar actionBar=getSupportActionBar();
        
显示Action Bar:
actionBar.show();
        
隐藏Action Bar:
actionBar.hide(); 

二、添加Action Item

即在Action Bar的项。

添加Action Item的步骤

  1. 定义菜单资源文件
  2. 在OnCreateOptionsMenu()方法加载菜单资源文件。

定义资源:
在menu.xml设置item时:
1、android:showAsAction决定该菜单的显示位置:
always:显示在Action Bar上
ifRoom:如果有空间,则在Action Bar,无空间则在溢出菜单中。、
never:永远也不显示在Action Bar上。
withText:显示在Action Bar上,并显示文本。
2、 android:icon,控制显示图片。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/search"
        android:title="搜索"
        app:showAsAction="always"/>
</menu>

重写OnCreateOptionsMenu()方法:

    //重写onCreateOptionsMenu,解析菜单资源文件
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater=new MenuInflater(this);
        inflater.inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

三、添加Action View

进行搜索操作的组件。

实例:实现微信Action Bar上的搜索,通讯录、添加。

效果:
在这里插入图片描述
在这里插入图片描述
menu.xml文件

//特别注意actionViewClass、actionLayout、showAsAction的前缀都为自定义命名空间。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/search"
        android:title="搜索"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always"/>
    <item android:id="@+id/img1"
        android:title="通讯录"
        app:actionLayout="@layout/img_message"
        app:showAsAction="always"/>
    <item android:id="@+id/img2"
        android:title="添加"
        app:actionLayout="@layout/img__add"
        app:showAsAction="always"/>
</menu>

img_message.xml和img_add.xml(类似,只列出一个)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="12dp"
        android:src="@drawable/w11"/>
</LinearLayout>

MainActivity.java

package com.example.asus.demo;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //隐藏Action Bar标题。
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }

    //解析菜单资源文件
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

总结:
在这里插入图片描述

四、Action Bar与Tab

实现Tab导航Action Bar的步骤

  1. 设置使用Tab导航方式。
  2. 添加多个Tab标签页,并添加事件监听器。

实例:实现有道词典app的Tab导航的Action Bar
???方法过时了…mmp

五、实现层级式导航

模拟微信实现带向上导航按钮的Action Bar
效果:
在这里插入图片描述
在这里插入图片描述
布局文件省略

FriendActivity.java设置向上导航图标显示

package com.example.asus.demo3;

import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

public class FriendActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friend);
        //判断父Activity是否为空,不为空,设置导航图标显示
        if(NavUtils.getParentActivityName(FriendActivity.this)!=null)
        {
            //设置显示向左的箭头图标
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }
}

MainActivity.java文件实现跳转

package com.example.asus.demo3;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imageView= (ImageView) findViewById(R.id.img);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,FriendActivity.class);
                startActivity(intent);
            }
        });
    }
}

manifest文件实现层级式返回。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.asus.demo3">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".FriendActivity"
            android:label="朋友圈">
            <!-- value用来记住是从哪个Activity跳转过来的。-->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"/>
        </activity>
    </application>

</manifest>

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值