読者です 読者をやめる 読者になる 読者になる

woshidan's blog

そんなことよりコードにダイブ。

AndroidのToolbarの左側の余白の指定について

ぐぐればぐぐるほど一体どれがどれなんだーってなったので、まとめ。

一部指定が効く、効かないがあったとしてもどの要素に効くとかはさすがに変わらないでしょ...。

Activityのコード

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar mToolbar = (Toolbar) findViewById(R.id.custom_toolbar);
    mToolbar.setNavigationIcon(R.drawable.black_square_30dp);
    mToolbar.setTitle("Title");
    mToolbar.setLogo(R.mipmap.ic_launcher);
    }

app:contentInsetStart

NavigationIcon以外のToolbar上の要素がToolbarの左端からどの程度余白を空けて配置されるか。 NavigationIconの領域より大きめの値を指定するとTitleの余白に対して、app:contentInsetStartapp:titleMarginStartの 両方が効く、みたいなことになるので合わせて使う場合は要注意。

<android.support.v7.widget.Toolbar
    android:id="@+id/custom_toolbar"
    android:background="@android:color/darker_gray"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    app:contentInsetStart="100dp"
    android:layout_height="?attr/actionBarSize"
    >

f:id:woshidan:20151107152809p:plain

app:titleMarginStart

Titleとその左の要素からの余白をどの程度空けるか。キャプションの位置を調整したい場合は、これで調整するとよいのかも。

<android.support.v7.widget.Toolbar
    android:id="@+id/custom_toolbar"
    android:background="@android:color/darker_gray"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    app:contentInsetStart="0dp"
    app:titleMarginStart="100dp"
    android:layout_height="?attr/actionBarSize"
    >

f:id:woshidan:20151107153054p:plain

android:paddingLeft

Toolbarの左端からNavigationIconを含む中の要素との余白。 NavigationIconの余白の調整に使えるが、API16以下だとマイナスの値が効かなかったりするが、 Lolipop以上では便利なのでは(Lolipop以下は頑張ってImageView置く)。

<android.support.v7.widget.Toolbar
    android:id="@+id/custom_toolbar"
    android:background="@android:color/darker_gray"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:paddingLeft="100dp"
    android:layout_height="?attr/actionBarSize"
    >

f:id:woshidan:20151107153652p:plain

android:layout_marginLeft

Toolbarと画面左端の余白。android:layout_marginXXは背景の中に白や黒の小さめのToolbarが浮いている、みたいなときに使えばいいと思う。

<android.support.v7.widget.Toolbar
    android:id="@+id/custom_toolbar"
    android:background="@android:color/darker_gray"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_marginLeft="100dp"
    android:layout_height="?attr/actionBarSize"
    >

f:id:woshidan:20151107153523p:plain