在android中经常会使用到ActionBar,我们可以通过res/values/style去定义ActionBar,网上有很多。但往往受到很多的限制,还不如自定义一个,这里将展示一个简单的自定义的ActionBar:
在layout目录下建立一个界面布局文件myactionbar_style:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#c89932">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_marginLeft="10dp"
android:gravity="center"
android:layout_gravity="left|center" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是标题"
android:textColor="#00a497"
android:gravity="center"
android:layout_gravity="center"
android:textSize="20sp"/>
</FrameLayout>
接下来在Java代码中把此布局填充到actionBar中利用ActionBar中的setCustomView方法:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayShowHomeEnabled(false);//去掉导航
actionBar.setDisplayShowTitleEnabled(false);//去掉标题
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowCustomEnabled(true);
ActionBar.LayoutParams lp =new ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.myactionbar_style, null);
actionBar.setCustomView(view, lp);
}
}
显示效果: