您的位置:首页 > 移动开发 > Android开发

android学习笔记:在actionBar中增加控件

2016-06-24 11:26 471 查看
1.在AndroidManifest.xml中添加配置activity属性

<activity android:name=".killProcess"
android:label="杀杀杀"
android:theme="@style/AppTheme">
</activity>
2.在menu文件夹下新建一个布局,并在布局中增加控件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".killProcess">
<item android:id="@+id/personalInformation"
android:title="一般不显示"
android:icon="@drawable/cn_icon_person_center_blue"
android:orderInCategory="100" app:showAsAction="always" /><!--icon可以自选一个图片,放在res文件下的drawable目录下-->
<item android:id="@+id/dianhua" android:title="一般不显示"
android:orderInCategory="100" app:showAsAction="never" /><!--如果是never则会将icon收敛到三个点点点的menu中-->
</menu>
3.然后在activity对应的java文件中重载onCreateOptionsMenu方法,并选用自己创建的menu文件,比如此处的“R.menu.kill”

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.kill, menu);
return super.onCreateOptionsMenu(menu);
}



这种方式的actionBar是没有三个点点点的overflow按钮,当标题栏上的控件过多时,无法自动将控件隐藏进overflow按钮

如果需要使用带overflow的标题栏,可以通过反射设置显示overflow按钮,修改ViewConfiguration类的sHsPermanentMenuKey字段值

private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}然后在OnCreate方法中调用一下刚才的setOverflowShowingAlways()就可以了
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kill_process);
setOverflowShowingAlways();
另外,也可以换一个theme

1.在AndroidManifest.xml文件中将theme改成AppTheme.NoActionBar

<activity android:name=".killProcess"
android:label="杀杀杀"
android:theme="@style/AppTheme.NoActionBar">
</activity>
2.在activity的布局文件中增加toolBar

<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>


3.在activity对应的java文件中添加布局文件中定义的toolBar

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kill_process);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);


menu文件和onCreateOptionsMenu和第一种方式保持一致就可以了,运行效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: