[Android] ダイアログの横のスペース [メモ]

ダイアログに苦しめられたのでメモ。

# 起こった事
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289190/39c0254a-f0d3-61ee-8ffa-7f975cec95fd.png  width=200>
カスタムレイアウトのダイアログを作る時に、この両端のマージンがどうしてもいい感じに指定できなくて苦しめられた。

```xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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"
    >

    <TextView
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:gravity="center"
        android:text="ダイアログ"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />

</androidx.constraintlayout.widget.ConstraintLayout>
```
```kotlin
class TestDialog : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return requireActivity().let {
            val builder = AlertDialog.Builder(it)
            val inflater = requireActivity().layoutInflater

            builder.setView(inflater.inflate(R.layout.fragment_dialog, null))
            builder.create()
        }
    }
}
```

実装したコードは上記です。
やりたいことはダイアログの左右のマージンを100dpに指定したい。

# 解決方法
まず、ダイアログの横目一杯に表示してみようとしました。

```kotlin

    override fun onStart() {
        super.onStart()
        dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
    }
```

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289190/1f816110-bff2-e961-d312-b2aa9fd82bee.png  width=150>

完全に横に広げることができません。。。。

```xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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:layout_marginHorizontal="100dp"
    >

    <TextView
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:gravity="center"
        android:background="@color/white" <- 追加
        android:text="ダイアログ"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />

</androidx.constraintlayout.widget.ConstraintLayout>
```
```kotlin
 override fun onStart() {
        super.onStart()
        dialog?.window?.setBackgroundDrawableResource(android.R.color.transparent)
```

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289190/97b6889d-691a-57e0-7462-e77b43d78bfb.png  width=200>

広げたはいいもののここから、何やればいいかわからなくなったｗ
とりあえず、先程に戻って最後に残ったマージンがどこで決まってるか突き詰めることができました！何やらダイアログはデフォルトで左右上下にinsetが設定されているみたいです！

なので、スタイルの設定してあげれば行けそう。

```styles.xml
<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowBackground">@drawable/background_dialog</item>
    </style>
```
```backgroud_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="0dp"
    android:insetLeft="100dp"
    android:insetRight="100dp"
    android:insetTop="0dp"
    >
    <shape android:shape="rectangle">
        <solid android:color="@color/white" />
    </shape>
</inset>
```
```kotlin
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return requireActivity().let {
            val builder = AlertDialog.Builder(it, R.style.CustomDialog)
```

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289190/599b7602-ff84-cdd1-ae24-95650c9c006e.png  width=200>

できた？
ためしに横のInsetを0dpにしてみる

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289190/c6f1f9fa-22cf-be2c-80bd-11eeec24d61d.png  width=200>

`dialog?.window?.setBackgroundDrawableResource(android.R.color.transparent)`とか設定しなくても目一杯広がってくれてますね。