我对Kotlin非常陌生,面临以下挑战:我定义了一个合并了多个其他TableLayout的TableLayout。我把它们看作是我的UI的一种正方形,我想让它们简单地可点击。
所以我在MultiSquare.xml中的TableRow中定义了一行3个tableview:
<TableRow
android:padding="5dp">
<include layout="@layout/basesquare" android:id="@+id/square01"/>
<include layout="@layout/basesquare" android:id="@+id/square02"/>
<include layout="@layout/basesquare" android:id="@+id/square03"/>
</TableRow>
并尝试解决他们在我的MultiSquareActivity如下:
val mySquare01 : TableLayout = findViewById(R.id.square01)
mySquare01.setOnClickListener {
tvOutputMessage = findViewById(R.id.textView)
tvOutputMessage.text = "Table" + mySquare01.id + " was clicked!"
}
然而,我只是收到错误消息,R.id。square01是空的——哎,我真的不明白为什么。希望有人能帮忙^^
问题是:如何解决square1在ViewActivity?
好吧,我自己弄清楚了——我的方法有两个问题:
1)。我必须去掉square。xml中的merge Tag,合并到multisquare。xml
2)。我必须设置一个Id,甚至为我的子表的表布局在包含的表,这听起来有点奇怪,但它的工作。
Square.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:width="165dp">
<TableRow>
<include layout="@layout/basetable" android:id="@+id/basetable01"/>
<include layout="@layout/basetable" android:id="@+id/basetable02"/>
<include layout="@layout/basetable" android:id="@+id/basetable03"/>
</TableRow>
</TableLayout>
Multisquare.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*"
android:width="1545dp"
android:padding="1.5dp">
<TableRow android:padding="5dp">
<include layout="@layout/basesquare" android:id="@+id/square01"/>
<include layout="@layout/basesquare" android:id="@+id/square02"/>
<include layout="@layout/basesquare" android:id="@+id/square03"/>
</TableRow>
</TableLayout>
MultiSquareActivity:
private lateinit var mySquare01 : TableLayout
mySquare01 = findViewById(R.id.square01)
val square01basetable01: TableLayout = mySquare01.findViewById(R.id.basetable01)
square01basetable01.setOnClickListener {
...
}