Actionbar、菜单

来源:互联网 发布:淘宝吉他店铺推荐 编辑:程序博客网 时间:2024/05/21 05:18

例子

ActionBar可以使用onCreateOptionsMenu,和一个menu文件关联起来,也可以用setCustomView和一个布局关联,并且,以上2种方式是可以共存的

方式1我们称为menu方式,方式2我们称为customview方式。

对于menu方式来说,Actionbar上的每个按钮实际上都是一个菜单项MenuItem


对于menu式

代码如下

    protected int getMenuRes() {        return R.menu.menu_layout;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(getMenuRes(), menu);        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.broken) {            Toast.makeText(this,"broken",Toast.LENGTH_SHORT).show();            return true;        }        return super.onOptionsItemSelected(item);    }

对于customview式,代码如下

    protected void initActionBar() {        ActionBar actionBar = getSupportActionBar();        if (actionBar != null) {            actionBar.setCustomView(R.layout.activity_action_bar_custom_view);            actionBar.setDisplayShowCustomEnabled(true);            actionBar.setDisplayShowHomeEnabled(true);            actionBar.setDisplayUseLogoEnabled(true);        }    }
一般在oncreate里面调用


如图右边是menu方式,左边黄色部分是customview方式

先调的onCreate后调的onCreateOptionsMenu

module:ActionbarDemo5


activity_action_bar_custom_view.xml代码如下

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/custom_view_right_layout"    android:layout_width="wrap_content"    android:layout_height="match_parent"    android:layout_gravity="right"    android:background="#ffff00"    android:orientation="horizontal">    <ImageView        android:background="#ff0000"        android:layout_marginRight="10dp"        android:id="@+id/comment"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:src="@drawable/comment" />    <ImageView        android:background="#ff00ff"        android:id="@+id/qrcode"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:src="@drawable/qrcode" />    <ImageView        android:background="#0000ff"        android:layout_marginRight="20dp"        android:id="@+id/zone"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:src="@drawable/zone" /></LinearLayout>

这里    android:layout_gravity="right",所以这些ImageView都在右边,如果改为left,那么这些ImageView就会跑到左边,但是肯定在标题的右边,如下所示,这里为了显示的清楚,只采用了一个图标



注意

1、actionBar.setCustomView(View view, LayoutParams layoutParams)
第一个参数view一般是LinearLayout,如果用RelativeLayout会导致activity的标题无法显示,参考module:actionbaraddview

2、actionbar从左到右依次显示icon,标题,customview,menu图标



0 0
原创粉丝点击