Android開発に慣れていないため、カスタムツールバーの作成に大きな問題があります。私の要件:
私はactionBar.setCustomView(v);
を使用しようとしましたが、それは私の問題を解決しませんでした:
私の質問:
Toolbar
は基本的にFrameLayout
であるため、layout-tag内に自由に追加できます。あなたの場合、次のようなもので十分と思われます:
layout.xml
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?actionBarSize"
Android:background="?colorPrimary"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="?attr/actionBarSize"
Android:divider="@drawable/divider"
Android:dividerPadding="8dp"
Android:orientation="horizontal"
Android:showDividers="end">
<TextView
Android:id="@+id/toolbar_save"
style="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="?attr/selectableItemBackground"
Android:drawableLeft="@drawable/ic_action_check"
Android:drawablePadding="8dp"
Android:gravity="center_vertical"
Android:paddingLeft="16dp"
Android:paddingRight="16dp"
Android:text="Save"
Android:textAllCaps="true" />
</LinearLayout>
</Android.support.v7.widget.Toolbar>
divider.xml
これを/res/drawable
フォルダーに追加します。これは、上記のコードでLinearLayout
分周器として使用されます。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<size Android:width="1dp" />
<solid Android:color="@Android:color/white" />
</shape>
コード
private void setupToolbar() {
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
// Hide the title
getSupportActionBar().setTitle(null);
// Set onClickListener to customView
TextView tvSave = (TextView) findViewById(R.id.toolbar_save);
tvSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
}
右側の項目に関して:デフォルトのonCreateOptionsMenu
メソッドを使用し、対応するR.menu.*
リソースをインフレートするだけです。
結果
<Android.support.v7.widget.Toolbar
Android:layout_width="match_parent"
Android:layout_height="?actionBarSize"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
/>
ツールバーにはapp:contentInsetStartWithNavigation = "0dp"も必要です