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

Wes*_*ley 6 animation android radio-button

tl;dr:当用户单击不相关的文本视图时,我希望选择带有波纹动画的单选按钮。PerformClick 不执行此操作。我应该做什么呢?

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

在此输入图像描述

我的布局的总体结构是这样的:

<RadioGroup>

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

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

  <!-- ... -->

</RadioGroup>
Run Code Online (Sandbox Code Playgroud)

我已将 OnClickListener 添加到文本视图,以便点击标题可以选择单选按钮:

officialBusinessCaption.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    officialBusinessRadio.performClick();
  }
});
Run Code Online (Sandbox Code Playgroud)

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

有没有更正确的方法来达到这个效果?也就是说,是否有更好的方法将标题文本视图上的点击转发到单选按钮?如果没有,是否有一种直接的方法可以以编程方式触发单选按钮上的连锁反应?

我不喜欢使用字符串资源设置所有文本,原因如下:

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

Raf*_*ñoz 3

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

科特林:

    radioButton.post {
        radioButton.isChecked = true
    }
Run Code Online (Sandbox Code Playgroud)

爪哇:

    radioButton.post(new Runnable() {
        @Override
        public void run() {
            radioButton.setChecked(true);
        }
    })
Run Code Online (Sandbox Code Playgroud)

以前,我只是这样做setChecked(true),但行不通。