LoginSignup
15
14

More than 5 years have passed since last update.

Toolbar を使ってちょっとおしゃれなダイアログを作る

Posted at

イメージ

Toolbar なので、左上と右上2つのアイコンにはイベント処理を入れられます。画像のように、ポジティブ/ネガティブボタン的なものを用意すればアラートダイアログのように使えるでしょうか。

今回の実装のように、アラートダイアログの View の部分のみをセットする方法であれば、4系と5系で同じデザインにできます。

qiita.png

コード

Activity は ActionBarActivity を継承してください

SampleFragment.java
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_sample, null);

Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // ナビゲーションアイコンクリック時の処理
    }
});
toolbar.inflateMenu(R.menu.menu_sample);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
        // メニュークリック時の処理
        return false;
    }
});

new AlertDialog.Builder(getActivity())
        .setView(view)
        .show();

レイアウト

dialog_sample.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:navigationIcon="@drawable/ic_navigation_alert"
        app:subtitle="Subtitle"
        app:title="Title" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="16dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="EditText" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp" />

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="CheckBox" />
    </LinearLayout>

</LinearLayout>

メニュー

menu_sample.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_cancel"
        android:icon="@drawable/ic_action_cancel"
        android:orderInCategory="100"
        android:title="@string/action_cancel"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_done"
        android:icon="@drawable/ic_action_done"
        android:orderInCategory="110"
        android:title="@string/action_done"
        app:showAsAction="always" />
</menu>
15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14