android - 如何在 Kotlin 中创建 View 类对象?什么是属性集?如何为视图创建它?
问题描述
在 Android 中,我有两个类文件,MainActivity 和 CanV。
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
CanV.kt,这是一个视图类。
class CanV(context: Context, attributeSet: AttributeSet): View(context){ ... }
activity_main.xml 中的 CanV 视图
<com.app.app_name.CanV
android:id="@+id/cans"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0">
</com.app.app_name.CanV>
现在我想在 MainActivity 中创建 CanV 类对象。我来试试:
val c: CanV = CanV(this, ?)
但是,我不知道 AttributeSet 参数值。如何创建和传递 CanV 视图的 AttributeSet?
解决方案
如果您希望能够CanV
从 XML 和 Java/Kotlin 创建实例,您应该提供两个构造函数:
class CanV : View {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
...
}
第一个可以在 Kotlin ( val v: CanV = CanV(this)
) 中使用,第二个在从 XML 膨胀时自动使用。
推荐阅读
- spring - Spring Security SAML 重放攻击防范
- python - 不知道如何在 Tkinter 中读取变量
- r - 更改 Bar ggplot 的边框和颜色,但仅适用于一组
- c++ - 在我的小部件应用程序的 qt mainwindow.ui 窗口中打印文本
- ghostscript - 在树莓派上安装旧版本的 ghostscript
- asp.net-mvc - 使用多连接方法语法将 SQL SERVER SELECT 转换为 LINQ
- mysql - Tableau 中 CTE 查询的初始 SQL
- php - 待处理的 Ajax 请求
- kentico - Kentico:您使用的 Kentico 版本中不提供“MVTesting”功能。有关更多详细信息,请参阅事件日志
- python - 如何使用 kivy 向特定用户发送消息