如何创建Android UI库

问题描述

我有很多UI实用程序代码,并希望为每个应用程序创建一个android库。通过我的所有研究,我做了下面的事情。

  • 文件->新模块。创建一个Android库

  • 在build.gradle文件中实现库implementation project(':app:FirstLibrary')

  • 库中的Kotlin和xml文件在下面

FirstLib.kt

class FirstLib(mContext: Context) : Activity() {
    private var mContext: Context? = null
    private var view: View? = null

    fun s(message: String?) {
        layoutInflater.inflate(R.layout.first_lib_view,null)
        Toast.makeText(mContext,message,Toast.LENGTH_SHORT).show()
    }
}
first_lib_view.xml 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Om Namah Shivaya"
        android:textSize="16sp" />

</LinearLayout>
  • 接下来,我正在尝试访问如下所示的主要xml文件中的UI库
<com.example.firstlibrary.FirstLib
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools="ajkdfbj"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

现在我什么也没得到。甚至没有吐司消息。

如何在Android中创建UI库并使用它。我有自己的自定义视频播放器,音频播放器,图像渐变视图等。我现在需要制作所有这些库。感谢您的阅读

解决方法

要实现自定义视图元素,您需要像以前一样将类放入单独的模块中,并从视图继承您的自定义视图。

  • 即,如果这是一个自定义视图,并且您希望在xml文件中使用它,则应创建如下的smth:
MyCustomView @JvmOverloads constructor(
    context: Context,attrs: AttributeSet? = null,defStyleAttr: Int = 0
): View {

// you should override onMeasure,onLayout,onDraw here as it marked as abstract afaik

// and implement your logic

}

并实现整个onMeasureonLayoutonDraw逻辑。

  • 如果要扩展现有视图逻辑,只需从现有视图逻辑继承并填充行为即可。
MyCustomView @JvmOverloads constructor(
    context: Context,defStyleAttr: Int = 0
): TextView() {

... your logic goes here...

} 

您确实实现了自定义活动,但将其用作视图,因此,这对您不起作用

PS:here您可以了解有关自定义视图组件的更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...