20

我有一个包含另一个布局的布局:

活动主.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"/>

    <include layout="@layout/included_layout" />

</LinearLayout>

include_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

    <TextView
        android:id="@+id/includedTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Included TextView"/>

</LinearLayout>

如何在包含的布局中获取对 TextView 的引用?(还)不支持吗?

主要活动:

import android.app.Activity
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.activity_main.*

class MainActivity : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView.text = "text" // works!
        textViewInclude.text = "textInclude" // does not work: "Unresolved reference: textViewInclude "
    }
}
4

2 回答 2

19

您应该import包含布局。

import android.app.Activity
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.included_layout.* // Here

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // From activity_main.textView
        textView.text = "text" 

        // From included_layout.textViewInclude
        textViewInclude.text = "textInclude"
    }
}
于 2015-12-24T07:01:17.877 回答
0

在要访问其他布局元素的 Activity 中,单击 Listner

class LoginActivity : AppCompatActivity(), View.OnClickListener {
 
 override fun onClick(view: View?) {
    when (view?.id) {
        R.id.dialog_cancel-> { dialog.cancel() }
    }
  }
}

在您在 Activity 中导入的另一个布局中,将 onClick() 放置在元素中并将其引用到您导入 onClick 列表器 android:onClick="onClick" 的 Activity

在此处输入图像描述

它将正常工作,另一个 xml 元素将监听点击

于 2020-07-17T20:05:14.670 回答