LoginSignup
8
8

More than 5 years have passed since last update.

AnkoでFragment用のレイアウトを作る

Last updated at Posted at 2015-05-12

レイアウトをコードで書けるDSLのAnkoですが、ドキュメントを見てもFragmentのonCreateViewで返すViewをどう作ればいいのかよく分からず躓いたのでメモ。

これであってるのかな?もっといい方法があれば教えて下さい。

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    // val view = inflater!!.inflate(R.layout.fragment_main, container, false)

    val image = UI {
        imageView {
            id = View.generateViewId()
            contentDescription = "test image"
            image = if (Build.VERSION.SDK_INT < 21)
                getResources().getDrawable(R.drawable.bike)
            else
                getResources().getDrawable(R.drawable.bike, null)
        }
    }.toView()

    val view = UI {
        relativeLayout {
            padding = dip(16)

            addView(image.layoutParams() { centerInParent() })

            textView {
                text = "test image"
            }.layoutParams(width = wrapContent, height = wrapContent) {
                below(spinImage.getId())
            }
        }
    }.toView()

    // imageに対する処理とか

    return view
}

まだ、Ankoが便利なのかよくわかってない。

面倒ポイントとしては

  • RelativeLayoutだとどうしてもViewのIDが必要になるので自分で生成しないといけない。
    • dipみたいにAnko側でIDを生成してくれるUtilがあると助かるんだけど… View.generateViewId()はAPI 17からだし…
  • Viewの一部を外で使いたいとき若干手間
8
8
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
8
8