如何自定义ActionBar显示标题在中间位置 可用

   在Android3.0以后就开始引入了ActionBar了,这篇重点记录如何自定义ActionBar让标题显示在中间的位置。虽然android手机有自带的返回键,不过当今很多应用还是添加actionbar显示标题在中间,在左侧加入一个返回按钮。

    添加一个ActionBar很简单,在AndroidManifest.xml文件中指定Application或者Activity的theme为Theme.Holo或其子类即可。添加完ActionBar后,要实现题目所述功能,首先需要自定义你自己需要的标题文件布局,这里,我给出一个示例(action_bar_title):

[java]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:background="#ff0000">  
  6.       
  7.     <ImageButton   
  8.         android:id="@+id/image_btn"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:background="@drawable/fh"  
  12.         android:layout_marginLeft="12dp"  
  13.         android:gravity="center"  
  14.         android:layout_gravity="left|center"  
  15.         />  
  16.       
  17.     <TextView   
  18.         android:id="@+id/title"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:text="标题"  
  22.         android:gravity="center"  
  23.         android:background="#ff0000"  
  24.         android:layout_gravity="center"  
  25.         android:textSize="20sp"  
  26.         />  
  27.       
  28. </FrameLayout>  

接下来就可以在activity中直接实现需求:

[java]  view plain  copy
  1. package com.example.actionbar;  
  2.   
  3. import android.app.ActionBar;  
  4. import android.app.Activity;  
  5. import android.content.Context;  
  6. import android.os.Bundle;  
  7. import android.view.Gravity;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.widget.ImageButton;  
  11. import android.widget.Toast;  
  12.   
  13. public class MainActivity extends Activity{  
  14.   
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.           
  20.         ActionBar actionBar = getActionBar();  
  21.         actionBar.setDisplayHomeAsUpEnabled(true);  
  22.           
  23.         ActionBar.LayoutParams lp =new ActionBar.LayoutParams(  
  24.                   ActionBar.LayoutParams.MATCH_PARENT,  
  25.                   ActionBar.LayoutParams.MATCH_PARENT,  
  26.                   Gravity.CENTER);  
  27.         LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  28.         View titleView = inflater.inflate(R.layout.action_bar_title, null);  
  29.         actionBar.setCustomView(titleView, lp);  
  30.           
  31.         actionBar.setDisplayShowHomeEnabled(false);//去掉导航  
  32.         actionBar.setDisplayShowTitleEnabled(false);//去掉标题  
  33.         actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);  
  34.         actionBar.setDisplayShowCustomEnabled(true);  
  35.           
  36.         ImageButton imageBtn = (ImageButton) actionBar.getCustomView().findViewById(R.id.image_btn);  
  37.           
  38.         imageBtn.setOnClickListener(new View.OnClickListener() {  
  39.               
  40.             @Override  
  41.             public void onClick(View v) {  
  42.                 Toast.makeText(MainActivity.this"返回", Toast.LENGTH_SHORT).show();  
  43.             }  
  44.         });  
  45.     }  
  46. }  

在activity中通过ActionBar actionBar = getActionBar();获得ActionBar实例,然后通过actionBar.setCustomView(titleView, lp);设置自己定义的标题布局。



你可能感兴趣的:(android,Actionbar)