常规重写ActionBar的方法无法完全覆盖ActionBar,通过重载onCreateOptionsMenu函数可以做到完全覆盖的效果。
效果图:
实现方法:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.main, menu); setActionBarLayout(R.layout.actionbarlayout, this); return true; }
/** * 设置ActionBar的布局 * * @param layoutId * 布局Id * * */ @SuppressLint("NewApi") public void setActionBarLayout(int layoutId, Context mContext) { ActionBar actionBar = getActionBar(); if (null != actionBar) { actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflator.inflate(layoutId, new LinearLayout(mContext), false); ActionBar.LayoutParams layout = new ActionBar.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); actionBar.setCustomView(v, layout); } }
actionbarlayout.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFF8824" android:orientation="horizontal" > <Button android:id="@+id/btnActionBarBack" android:layout_width="0px" android:layout_height="fill_parent" android:layout_weight="2" android:text="test" /> <TextView android:id="@+id/tvActionBarName" android:layout_width="0px" android:layout_height="fill_parent" android:layout_weight="6" android:gravity="center" android:text="Hello" /> <Button android:id="@+id/btnActionBarSearch" android:layout_width="0px" android:layout_height="match_parent" android:layout_weight="2" android:text="test" /> </LinearLayout>
源码下载地址:
http://download.csdn.net/download/miaoyunzexiaobao/8715065
转载请注明出处:http://blog.csdn.net/miaoyunzexiaobao