Android Toolbar実装に関するメモ書き等

2016-05-16 02.04.28

Toolbarって開発してると色々ややこしいですよね。。

個人的につまった部分とかメモしておきます。

ちなみに私はSetToolbarとしてクラスを別に設けて

簡単に呼び出せるようにしています!

import android.content.res.Resources;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class SetToolbar extends AppCompatActivity{

	public static void set(AppCompatActivity mContext) {
		// toolbar定義
		Toolbar toolbar = (Toolbar) mContext.findViewById(R.id.tool_bar);
		// タイトル
		//toolbar.setTitle("Chorocy");
		//toolbar.setNavigationIcon(R.drawable.menuicon);
		// タイトルの色(PrimaryColorを使う)
		Resources res = mContext.getResources();
		int color = res.getColor(R.color.textColorPrimary);
		toolbar.setTitleTextColor(color);
		// ActionBarと同等にToolbarを使う
		((AppCompatActivity) mContext).setSupportActionBar(toolbar);

	}
}

それから、影を入れたいときにいい方法を書いてらっしゃる方がいたので

これもメモしておきます。

<android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@color/primary"
        android:minHeight="?attr/actionBarSize" >
    </android.support.v7.widget.Toolbar>
    <!-- ToolBar end -->
    <!-- Overlayされる側のコンテンツをFrameLayoutで囲う -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:foreground="?android:windowContentOverlay"
        >
        <ScrollView
            android:id="@+id/scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
        </ScrollView>
    </FrameLayout>

android:foregroundというのを入れると

overlayでviewを表示できるらしいです。

それによりToolbarの裏に影用のを配置して

その上にToolbarを配置して影っぽくしている感じです。

android:windowContentOverlayで

直前に呼ばれたviewを上乗せするみたいです。

そして本当に引っかかりやすいのが

This Activity already has an action bar supplied by the window decor.

Do not request Window.FEATURE_ACTION_BAR and

set windowActionBar to false in your theme to use a Toolbar instead.

既にaction barあるんだからToolbarは表示できないよ!って感じです。

これは

ActionBarを表示しないようにしてあげなきゃいけません。

style.xmlに

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">

これでAction Bar非表示

AndroidManifestに

android:theme="@style/AppBaseTheme"

これでばっちりですっ!

後は文字の設定とかメニューボタン?とかですね。。

どうせならToolbarの文字部分をもっと変えたい!ってありますよね。

styleとかで設定するのも面倒だし。。

そういう場合は普通にview配置しちゃいます笑

まずはToolbarの元のテキストはセットしないようにします。

//タイトルは非表示
toolbar.setTitle("");

そして普通にToolbarの中に書いちゃいます!

<!-- ToolBar start -->

    <android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@color/primary"
        android:minHeight="?attr/actionBarSize" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"
            android:text="Chorocy"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:textStyle="bold" />

    </android.support.v7.widget.Toolbar>
    <!-- ToolBar end -->

これならめちゃくちゃ楽ですね。。

これがToolbarの最大のメリットだと思います!

2016-05-16 02.18.53

随時追記いたします!

コメント

タイトルとURLをコピーしました