カスタムDialog(2)


「AndroidロボットはGoogleが作成したもので、私たちが共有している作品をコピーまたは修正するために使用され、Creative Commons 3.0の著者マークライセンスの条項と条件に従って使用されます.」

Dialog Custom 2番目


前の記事で紹介したDialog Custom法はDialogを簡略化した.
カスタマイズできますが、致命的な欠点がある場合は、
つまり、ボイラーボードのコードが乱発します.
もちろん、モジュール化して再使用することは、あまり問題になりません.
使いやすい機能をいくつか提供しています.
それがセミコロンです.

DialogFragment


使い方は簡単です.
DialogFragment()を引き継ぐFragmentを作ればいい
まずDialogにレイアウトを作ってあげましょう
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DialogSampleFragment"
    android:gravity="center"
    android:orientation="vertical"
    android:padding = "20dp">

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
            android:id = "@+id/tv_dialog"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="1"/>

        <Button
            android:id = "@+id/btn_dialogClose"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="button"
            android:background="@drawable/ripple_mask" />
    </LinearLayout>

</LinearLayout>
class DialogSampleFragment : DialogFragment() {
    private lateinit var binding : FragmentDialogSampleBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //isCancelable = false
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        binding = FragmentDialogSampleBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        Toast.makeText(view.context, "Text", Toast.LENGTH_SHORT).show()
        binding.tvDialog.text = "it's Dialog Fragment Sample"
        binding.btnDialogClose.setOnClickListener {
            dismiss()
        }
    }
}
ライフサイクルで書けばいいです.
onViewCreatedに打てば、それは気持ちの問題です.

きれいなゴーグル効果が確認できます.

でもDeprentedに...


上にリンクされているGoogleの公式ドキュメントで見ることができます.
API Level 28(Android 9)からDepecadeされる.
しかし、今後のAndroid Xパッケージに含まれ、その使用に影響を与えることはありません.
その後、削除または更新された部分が見つかった場合.
その時になってから書こう
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.