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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式检查带有涟漪动画的Android单选按钮?相关的知识,希望对你有一定的参考价值。

tl; dr:当用户点击不相关的文本视图时,我想要一个带有波纹动画的单选按钮。 performClick不会这样做。我应该做什么呢?

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

enter image description here

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

<RadioGroup>

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

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

  <!-- ... -->

</RadioGroup>

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

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

当我点击单选按钮本身或其自己的文本(“官方商务”)时,单选按钮会动画选择并产生波纹墨水效果。当我在标题文本上面(并且调用performClick)时,单选按钮仍然会动画选择,但不会出现波纹。

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

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

  • 我打算对标签和标题进行不同的造型。
  • 我希望收音机垂直居中与第一行文字对齐。
答案

我在RadioButton中通过人口RecyclerViews来解决这个问题。所有这些都被设置为isClickable = false,因为我根据另一个规则覆盖他们的选择,但触发选择到true的方式是:

科特林:

    radioButton.post {
        radioButton.isChecked = true
    }

Java的:

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

之前,我只做setChecked(true)而且它不起作用。

以上是关于如何以编程方式检查带有涟漪动画的Android单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章

带有波纹动画的Android自定义视图边缘裁剪

Android:如何在 Java 中以编程方式选中/取消选中 RadioGroup 中的单选按钮

在其线性布局垂直父Android中将以编程方式创建的单选按钮居中

如何以编程方式重置或取消选中 Angular 中的单选按钮?

android中的恒定涟漪效应

Android5.0新特性之——动画效果1涟漪效果