android - 如何以编程方式检查带有波纹动画的 Android 单选按钮?

标签 android animation radio-button

tl;dr:当用户单击不相关的 TextView 时,我希望选择一个带有波纹动画的单选按钮。 performClick 不会这样做。我应该怎么做?

我有一个带有标签和较长描述的单选按钮。

enter image description here

我的布局的一般结构是这样的:

<RadioGroup>

  <RadioButton
      id="@+id/officialBusinessRadio"
      text="Official business" />

  <TextView
      id="@+id/officialBusinessCaption"
      text="This operates under a ..." />

  <!-- ... -->

</RadioGroup>

我在 TextView 中添加了一个 OnClickListener,以便点击标题选择单选按钮:

officialBusinessCaption.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    officialBusinessRadio.performClick();
  }
});

当我点击单选按钮本身或它自己的文本(“官方业务”)时,单选按钮将动画化为选中状态,并出现波纹墨水效果。当我在标题文本上(并调用了 performClick)时,单选按钮仍会以动画方式选中,但不会出现波纹。

是否有更正确的方法来获得这种效果?也就是说,是否有更好的方法将对标题 TextView 的点击转发到单选按钮?如果没有,是否有直接的方法以编程方式触发单选按钮上的链式 react ?

出于以下原因,我不希望使用字符串资源设置所有文本:

  • 我打算以不同的方式设置标签和标题的样式。
  • 我希望 radio 与第一行文本垂直居中对齐。

最佳答案

我已经通过在 RecyclerView 中填充 RadioButton 解决了这个问题。所有这些都设置为 isClickable = false 因为我根据另一个规则覆盖了它们的选择,但是将选择触发为 true 的方法是:

Kotlin

    radioButton.post {
        radioButton.isChecked = true
    }

Java:

    radioButton.post(new Runnable() {
        @Override
        public void run() {
            radioButton.setChecked(true);
        }
    })

之前,我只执行 setChecked(true),但它不起作用。

关于android - 如何以编程方式检查带有波纹动画的 Android 单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135019/

相关文章:

jquery - 单击单选按钮,突出显示 jQuery 中的 <p> 标记

java - 从 HashMap 获取数据到 SQLite 数据库

javascript - 将 jQuery 的 eq() 转换为 Greensock?

android - 是否可以使用 toObject 和 object 作为参数从 firestore 检索数据?

ios - SwiftUI 在 Spring() 动画完成后执行操作

javascript - 如何使二十面体上的三 Angular 形侧面积增加和减少,而不保留形状 "intact"?

angular - 简单表单 POST 的 Material mat-radio-button name 属性

jquery - 如何使用 JQuery 选择单选按钮

android - 在启动 CustomViewPager 时启动动画

android - 在 Windows 上使用 Android Studio 3.1.4 调试 APK 时出现问题