<< Android-Note
アクションバーのカスタマイズ
アクションバーには必ず左側にアイコンとタイトルが表示されます。
このタイトルを非表示にしてアクションバーの左にウィジェットを表示したい場合の方法について紹介します。
*注意* : ここではアクションバーを表示するのにActionBarActivityを使っています。
レイアウト
まずアクションバーに設置するレイアウトを作成します。
ここでは仮にmy_action_bar_views.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:orientation="horizontal">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="Enter text ..."/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Search"/>
</LinearLayout>
ここでは検索バーと検索ボタンを持つようなレイアウトを作ってみました。
アクションバーへの設置
次に作成したレイアウトをアクションバーに設置します。
public class MyActivity extends ActionBarActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setActionBar(); } /**アクションバーのカスタム*/ private void setActionBar() { /**アプリアイコンとタイトルを非表示*/ getSupportActionBar().setDisplayShowCustomEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setIcon(null); getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setDisplayUseLogoEnabled(false); /**作成したレイアウトをアクションバーに設置*/ LayoutInflater inflator = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE); View actionBarLayout = inflator.inflate( R.layout.my_action_bar_views, null); ActionBar.LayoutParams params = new ActionBar.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); getSupportActionBar().setCustomView(actionBarLayout, params); } }
setDisplayShowTitleEnabledメソッドでタイトルを非表示、setIconにnullを渡すことでアイコンを非表示にしています。
レイアウトをアクションバーに設置するにはsetCustomViewメソッドを使えばOKです。
このとき、setCustomViewでカスタムされるのはタイトルバーのみなのでそれ以外のメニューなどには影響はありません。
カスタムしたアクションバーは次の画像のようになります。
以上がアクションバーにカスタムビューを設定する方法です。お疲れ様でした。
© Kaz