カスタムToastの角を丸める

AndroidのToastはinflaterを使うことで好きなレイアウトを設定できますが、cssのradiusのように角を丸めたい場合

まず以下のような/res/layout/radius_shape.xmlファイルを作成し

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp" />
<padding android:left="2dp"
  android:top="2dp"
  android:right="2dp"
  android:bottom="2dp" />
<solid android:color="#CC4D404D" />
<stroke android:width="2dp" android:color="#CC8D808D" />
</shape>

次にToastのカスタムレイアウト/res/layout/custom_toast_layout.xmlを作成、そのbackground属性に設定します

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/customToastLayout"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@layout/radius_shape">

<ImageView android:id="@+id/image"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"/>

<TextView android:id="@+id/text"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"/>

</LinearLayout>

infraterでカスタムレイアウトを設定すると、角を丸めたToastの完成

View toastView = getLayoutInflater().inflate(
  R.layout.custom_toast_layout,
  (ViewGroup)findViewById(R.id.customToastLayout)));

Toast toast = new Toast(context);
toast.setView(toastView);
toast.show();

参考:How to create an image on a Toast

You may also like...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です