【发布时间】:2020-01-17 13:15:04
【问题描述】:
我发现创建自定义视图的最简单方法是让它从 LinearLayout 继承,这样我就不必处理烦人的事情,比如重写 onLayout() 方法。我在我膨胀的关联 XML 文件的根目录下还有一个 LinearLayout,所以根目录下有 2 个。
如何通过删除其中一个额外的 LinearLayout 来优化这一点,但要保持创建自定义视图的简单性?
MyToolbar.kt:
class MyToolbar @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) :
LinearLayoutCompat(context, attrs, defStyleAttr) {
private val binding = MyToolbarBinding.inflate(LayoutInflater.from(context), this, true)
init {
// [...] Initialization of my view ...
}
}
my_toolbar.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- Actual content of my view -->
</LinearLayout>
【问题讨论】:
-
在
my_toolbar.xml中使用<merge>标签而不是<LinearLayout>。
标签: android android-layout android-view