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

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和第一种方式保持一致就可以了,运行效果如下:




猜你喜欢

转载自blog.csdn.net/u012480148/article/details/51751298
今日推荐