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
- AppCompatActivity
- AppCompatActivity
- AppCompatActivity
- AppCompatActivity
- AppCompatActivity使用
- AppCompatActivity 全屏
- 用好AppCompatActivity
- Android | AppCompatActivity
- AppCompatActivity的出现
- Activity,FragmentActivity,ActionBarActivity,AppCompatActivity
- AppCompatActivity去掉标题栏
- actionbaractivity 与 appcompatactivity
- AppCompatActivity中使用SearchView
- AppCompatActivity的View树
- 找不到AppCompatActivity无法继承
- AppCompatActivity透明化处理
- AppCompatActivity和ActionBarActivity
- AppCompatActivity相关问题
- 获取sha1码
- hadoop分布式模式的安装和配置
- 在阿里云上搭建svn
- 一个用java模拟ATM操作的小程序
- PHP邮件群发程序
- AppCompatActivity
- Bzoj 2002 弹飞绵羊
- Android中的WebView之loadDataWithBaseURL遇到的坑
- Unity UI 图片模糊的问题
- Oracle中约束条件
- Elastic Stack X-Pack 插件 更新 Updating Your License
- FPGA中组合逻辑和时序逻辑的区别
- 一次使用jqgrid展示数据,标题栏和对应数据不对应
- java数据库连接配置