在Android3.0以后就开始引入了ActionBar了,这篇重点记录如何自定义ActionBar让标题显示在中间的位置。虽然android手机有自带的返回键,不过当今很多应用还是添加actionbar显示标题在中间,在左侧加入一个返回按钮。
添加一个ActionBar很简单,在AndroidManifest.xml文件中指定Application或者Activity的theme为Theme.Holo或其子类即可。添加完ActionBar后,要实现题目所述功能,首先需要自定义你自己需要的标题文件布局,这里,我给出一个示例(action_bar_title):
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#ff0000">
-
- <ImageButton
- android:id="@+id/image_btn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/fh"
- android:layout_marginLeft="12dp"
- android:gravity="center"
- android:layout_gravity="left|center"
- />
-
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="标题"
- android:gravity="center"
- android:background="#ff0000"
- android:layout_gravity="center"
- android:textSize="20sp"
- />
-
- </FrameLayout>
接下来就可以在activity中直接实现需求:
- package com.example.actionbar;
-
- import android.app.ActionBar;
- import android.app.Activity;
- import android.content.Context;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.ImageButton;
- import android.widget.Toast;
-
- public class MainActivity extends Activity{
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- ActionBar actionBar = getActionBar();
- actionBar.setDisplayHomeAsUpEnabled(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 titleView = inflater.inflate(R.layout.action_bar_title, null);
- actionBar.setCustomView(titleView, lp);
-
- actionBar.setDisplayShowHomeEnabled(false);
- actionBar.setDisplayShowTitleEnabled(false);
- actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
- actionBar.setDisplayShowCustomEnabled(true);
-
- ImageButton imageBtn = (ImageButton) actionBar.getCustomView().findViewById(R.id.image_btn);
-
- imageBtn.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Toast.makeText(MainActivity.this, "返回", Toast.LENGTH_SHORT).show();
- }
- });
- }
- }
在activity中通过ActionBar actionBar = getActionBar();获得ActionBar实例,然后通过actionBar.setCustomView(titleView, lp);设置自己定义的标题布局。
代码链接:http://download.csdn.net/detail/tan313/8593441
原文地址:http://blog.csdn.net/tan313/article/details/45039677