如何将Android工具栏子类创建为一个单独的模块?

时间:2018-12-24 16:00:25

标签: android android-layout

TL; DR

如何在单独的Toolbar Android模块中创建自定义widget

说明

我创建了一个widget模块,在其中放入了我的应用程序使用的所有自定义小部件,但是由于android.view.InflateException

而崩溃
 Caused by: android.view.InflateException: Binary XML file line #15:
     Binary XML file line #15: Error inflating class com.example.widget.Toolbar
 Caused by: android.view.InflateException:
     Binary XML file line #15: Error inflating class com.example.widget.Toolbar

这里是Toolbar

class Toolbar : android.support.v7.widget.Toolbar {

    private lateinit var title: TextView

    constructor(context: Context) : this(context, null)

    constructor(context: Context, attrs: AttributeSet?) : this(
        context,
        attrs,
        android.support.v7.appcompat.R.attr.toolbarStyle
    )

    constructor(
        context: Context,
        attrs: AttributeSet?,
        defStyleAttr: Int
    ) : super(context, attrs, defStyleAttr) {
      init()
    }

    private fun init() {
        val view = LayoutInflater.from(context).inflate(R.layout.toolbar, this, true)
        title = view.findViewById(R.id.title)
    }

}

和XML布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize">

    <TextView
        android:id="@+id/text_title"
        style="?attr/titleTextAppearance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />

</android.support.v7.widget.Toolbar>

0 个答案:

没有答案