当前位置: 首页 > 知识库问答 >
问题:

SwitchCompat onClick未从XML布局激发

公孙威
2023-03-14

我们在out project中使用数据绑定,因此不在代码中实例化控件,而是在布局XML中这样做。我们在整个应用程序中使用了所有的UI控件,而且效果很好。问题是我现在在布局中添加了switchcompat控件。它只有onclick(未触发),而没有您希望从SwitchCompat中获得的oncheckedchange,对吗?

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <variable
            name="viewModel"
            type="music.queue_ui.list.QueueListViewModel" />
    </data>

    <androidx.appcompat.widget.SwitchCompat
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="@{() -> viewModel.toggleHeader()}" />
</layout>

toggleheader从不被调用:-(

package music.queue_ui.list

import android.widget.Toast
import androidx.lifecycle.ViewModel
import io.reactivex.disposables.CompositeDisposable


class QueueListViewModel(
) : ViewModel() {

    private val disposables = CompositeDisposable()

    fun toggleHeader() {
        // This never gets hit by SwitchCompat `onClick`. 
        // Why??????
        Toast.makeText(
            context, "SwitchCompat Clicked",
            Toast.LENGTH_LONG
        ).show()
    }

    override fun onCleared() {
        super.onCleared()
        disposables.clear()
    }
}

有人知道有什么好办法吗?

共有1个答案

越英韶
2023-03-14

使用:

android:onCheckedChanged="@{(v,checked)->viewModel.toggleHeader(checked)}"
 类似资料:
  • 我试图使用相对布局与一个扩展视图的自定义类,和几个按钮。这就是我最终希望它看起来的样子: http://imgur.com/b5mtdj7 null 编辑:这是“vs programmatic”的原因是,我认为重写measure不会是一个糟糕的口号,但我不知道这将如何与XML交互。我宁愿布局定义也在一个地方。 我的XML如下所示:

  • 我试图得到一个布局就像下面的图像为一个游戏在android studio 当前我的xml是 我想在下一个级别增加更多的卡(如lvl 2)我需要为每个级别做几个布局吗?

  • 问题内容: 我是Android开发的新手,已经开始创建自己的UI。我看到您可以动态创建它,如下所示(Dynamic Layouts ): 但我也看到netbeans有一个文件 Resources- > layout-> main.xml 。因此,您可以为UI创建XML布局(声明XML布局): 所以我的问题是应该使用哪个?在Android开发中,对动态布局和XML布局有何建议和优缺点? 问题答案:

  • 12.2.2.创建XML布局 小部件的外观布局很简单。留意我们在这里重用了TimelineActivity中用到的row.xml文件,用以表示消息的显示。另外再给它加一个小标题,在主屏幕上更醒目些。 例 12.2. res/layout/yamba_widget.xml <?xml version="1.0" encoding="utf-8"?> <!-- #1 --> <LinearLayout

  • ![我已经以线性布局(下面给出的代码)对其进行了编码,但想知道如何使用相对布局进行相同的操作,或者这只是一个考虑到布局的坏主意? 线性布局 - ][1] 使用相对布局时,我的ImageView不会显示在屏幕上:

  • 问题内容: 我试图以与定义视图布局相同的方式在XML中定义片段的布局。 这可能吗?我尝试了几种方法,但似乎都没有用。 我的活动布局如下所示(main.xml): 现在,由于我不太喜欢通过原始Java代码生成布局,因此我尝试按以下方式定义片段(fragment_lommeregner.xml): 难道我做错了什么?如何通过XML定义片段的布局? 问题答案: 片段的工作原理与活动类似,因为您需要一个J