AppCompatActivity

来源:互联网 发布:郑州seo服务公司 编辑:程序博客网 时间:2024/05/16 12:19

AppCompatActivity介绍

在API22之前我们使用标题栏基本都是在ActionBarActivity的Activity中处理的,而API22之后,谷歌遗弃了ActionBarActivity,推荐我们也可以说是强制我们使用AppCompatActivity。

AppCompatActivity与Toolbar结合

其实我们并不是要使用AppCompatActivity自带的标题栏,那样扩展会很麻烦,在14年的Android 5.0的时候就用Toolbar替代了ActionBar,而ActionBarActivity又被AppCompatActivity替代,那么使用方法就是引入Toolbar设置到Activity中。

实现步骤

1、让MainActivity extends AppCompatActivity

2.在布局文件中添加toolbar<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.myappactivity.MainActivity">    <android.support.v7.widget.Toolbar        android:id="@+id/activity_main_toolbar"        android:layout_width="match_parent"        android:background="@color/colorPrimary"        android:layout_height="wrap_content">    </android.support.v7.widget.Toolbar></LinearLayout>

3.修改新创建项目时在styles.xml中定义一下AppTheme并在AndroidManifest.xml文件中指定为App的主题(android:theme=”@style/AppTheme”),<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    <!-- Customize your theme here. -->    <item name="colorPrimary">#4876FF</item><!--toolbar的颜色-->    <item name="colorPrimaryDark">@color/colorPrimaryDark</item><!--标题栏上面的那个颜色-->    <item name="colorAccent">@color/colorAccent</item></style>

4.将Toolbar显示到界面我们创建一个方法名为initActionBar(),首先当然是获取Toolbar控件,然后将Toolbar设置到Activity中去public void initActionBar() {     Toolbar toolbar = (Toolbar) findViewById(R.id.activity_main_toolbar);     setSupportActionBar(toolbar);}

5.设置设置标题://设置标题  自带的标题没有居中显示的操作toolbar.setTitle("小陌陌");//设置标题的颜色toolbar.setTitleTextColor(getResources().getColor(R.color.colorAccent));//设置标题的位置toolbar.setTitleMargin(53,16,16,55);设置回退按钮:setSupportActionBar(toolbar);后面加入如下代码: //返回按钮的实现    toolbar.setNavigationIcon(R.drawable.title_back);    toolbar.setNavigationOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            finish();        }    });设置logo:toolbar.setLogo(R.id.app_logo);

设置副标题:toolbar.setSubtitile("小陌陌");

设置菜单: @Overridepublic boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.menu_main, menu);    return true;}

自己定义menu_main 可以参考: http://www.cnblogs.com/ssqqhh/p/5213331.html<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:yourapp="http://schemas.android.com/apk/res-auto">    <!--ifRoom表示当toolBar空间足够时,显示图标在标题栏中,否则将它隐藏到ToolBar末端的overFlow中-->    <!--always表示一直,never 从不-->    <!--表示这个菜单使用SearchView这个控件。-->    <item        android:id="@+id/action_search"        android:icon="@drawable/ic_search"        android:title="搜索"        yourapp:showAsAction="ifRoom" />    <item        android:id="@+id/group_chat"        android:icon="@drawable/ic_point_early_color"        android:title="发起群聊" />    <item        android:icon="@drawable/ic_point_late_color"        android:title="添加朋友"/>    <item        android:icon="@drawable/ic_point_sick_color"        android:title="首付款"/></menu>运行效果


修改样式:让弹出来的menu好看


运行效果

点击事件与美化

1.自定义标题   在toolbar布局添加如下,找到布局就能设置了<TextView    android:id="@+id/title"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_centerInParent="true"    android:layout_gravity="center"    android:text="www.dastorm.com"    android:textColor="@android:color/white"    android:textSize="20sp"    android:textStyle="bold" />、

2.右边图标的修改(默认是三个省略号)//右边menu键图标的修改toolbar.setOverflowIcon(getResources().getDrawable(R.drawable.ic_point_truancy_color));

3.通过反射 显示溢出menu的图标@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {    if (menu != null) {        if (menu.getClass().getSimpleName().equals("MenuBuilder")) {            try {                //同样先获取到需要调用的method                Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);                //设为可访问                m.setAccessible(true);                //调用方法                m.invoke(menu, true);            } catch (Exception e) {                //TODOAuto-generatedcatchblock                e.printStackTrace();            }        }    }    return super.onPrepareOptionsMenu(menu);}

4.点击事件的处理//设置右边的点击事件toolbar.setOnMenuItemClickListener(this); //菜单的点击事件@Overridepublic boolean onMenuItemClick(MenuItem item) {    switch (item.getItemId()){        case R.id.action_search:            Toast.makeText(this,"搜索事件",Toast.LENGTH_SHORT).show();            break;        case R.id.group_chat:            Toast.makeText(this,"群聊",Toast.LENGTH_SHORT).show();            break;    }    return false;}

最终运行图:

源码:http://download.csdn.net/detail/qq_27280457/9700113

1 0
原创粉丝点击