このように中央にロゴがあり、側面に 2 つのアクション項目があるアクションバーを作成するにはどうすればよいですか?
ActionBar Sherlock を使用します。
このように中央にロゴがあり、側面に 2 つのアクション項目があるアクションバーを作成するにはどうすればよいですか?
ActionBar Sherlock を使用します。
コメントで指摘したように、これが ABS で変更されるかどうかは正確にはわかりません (あまり変わらないと思います) が、標準のアクション バーを使用すると、アクション バー タイトルのカスタム レイアウト .xml を読み込むことができます。たとえば、action_bar_title.xml は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/your_desired_background" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:maxLines="1"
android:ellipsize="end"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>
次に、アクティビティで、onCreate() で次のようなメソッドを呼び出します。
private void setupActionBar() {
ActionBar ab = getActionBar();
ab.setDisplayShowCustomEnabled(true);
ab.setDisplayShowTitleEnabled(false);
ab.setIcon(R.drawable.your_left_action_icon);
LayoutInflater inflator = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.action_bar_title, null);
TextView titleTV = (TextView) v.findViewById(R.id.title);
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts/your_custom_font.ttf");
titleTV.setTypeface(font);
ab.setCustomView(v);
ab.setHomeAsUpEnabled(true);
}
左側のアクション アイテムを制御するには、Activity で次のようにします。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.yourRightActionItem:
//do something
return true;
case android.R.id.home: //<-- this will be your left action item
// do something
return true;
default:
return super.onOptionsItemSelected(item);
}
}
もちろん、メニュー xml のアクション アイテムに必要なその他の設定も行ってください。これは、右側のアクション アイテムに適用されます。
編集:別のコメントで、タイトルが画像になるとあなたが言ったのを見ました. その場合は、私の例で使用した TextView を実際の ImageView に置き換えてください。setupActionBar() メソッドのフォント カスタマイズ コードは無視してください。
Edit2: Java コードを更新しました。ab.setHomeAsUpEnabled(true) を実行する必要があります。次に、カスタム テーマを使用して、非表示 (または、Android がそれを受け入れるかどうかはわかりませんが、@null) をアップ インジケーターとしてホームに実装します。ここを参照してください(ここの回答から取得:)
<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
<!-- or you could try @null -->
</style>