如何自定義ActionBar顯示標題在中間位置
阿新 • • 發佈:2019-02-05
在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);設定自己定義的標題佈局。