Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a custom View/ViewGroup class in Anko DSL

I want to create a custom View which is just a wrapper of some Android Views. I looked into creating a custom ViewGroup which manages the layout of it's child views, but I don't need such complexity. What I basically want to do is something like:

class MainActivity
verticalLayout {
  textView {
    text = "Something that comes above the swipe"
  }
  swipeLayout {
  }
}

class SwipeLayout
linearLayout {
  textView {
    text = "Some text"
  }
  textView {
    text = "Another text"
  }
}

The reason is that I'd like to move the SwipeLayout code into a separate file but don't want to do any complex layout stuff myself. Is this possible using Anko?

Edit: As suggested, Is it possible to reuse a layout in Kotlin Anko solves this problem if the view is a root layout. But as shown in the example, I'd like to include this within another layout. Is that possible?

like image 804
Suhair Zain Avatar asked Oct 20 '16 06:10

Suhair Zain


1 Answers

you can use ViewManager.

fun ViewManager.swipeLayout() = linearLayout {
  textView {
    text = "Some text"
  }
  textView {
    text = "Another text"
  }
}

class MainActivity
  verticalLayout {
    textView {
      text = "Something that comes above the swipe"
    }
    swipeLayout {}
}
like image 58
sunghyun.lee Avatar answered Sep 23 '22 08:09

sunghyun.lee