问题描述
我有很多UI实用程序代码,并希望为每个应用程序创建一个android库。通过我的所有研究,我做了下面的事情。
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
}
并实现整个onMeasure
,onLayout
,onDraw
逻辑。
- 如果要扩展现有视图逻辑,只需从现有视图逻辑继承并填充行为即可。
MyCustomView @JvmOverloads constructor(
context: Context,defStyleAttr: Int = 0
): TextView() {
... your logic goes here...
}
您确实实现了自定义活动,但将其用作视图,因此,这对您不起作用
PS:here您可以了解有关自定义视图组件的更多信息