如何使用视图绑定访问 TextSwitcher 的子元素?

Posted

技术标签:

【中文标题】如何使用视图绑定访问 TextSwitcher 的子元素?【英文标题】:How to access child elements of a TextSwitcher using view binding? 【发布时间】:2021-10-28 01:07:56 【问题描述】:

我正在使用android view binding 来获取我的 XML 的自动生成的绑定类。在我的 XML 定义中,我使用了一个 TextSwitcher 控件和两个 TextView 类型的子元素。

在代码中,我像这样访问TextSwitcher 的子视图:

...
_binding = MyViewBinding.inflate((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE), this, true);

((TextView)_binding.myTextSwitcher.getChildAt(0)).setTextColor(_mySpecialColor);
((TextView)_binding.myTextSwitcher.getChildAt(1)).setTextColor(_mySpecialColor);
...

是否有更简单的方法可以直接使用 MyViewBinding 类访问 myTextSwitcher 的子视图,而无需强制转换它们?

XML 定义如下所示:

<TextSwitcher
  android:id="@+id/myTextSwitcher"
  android:layout_
  android:layout_>

  <TextView
    android:id="@+id/text1"
    android:layout_
    android:layout_/>

  <TextView
    android:id="@+id/text2"
    android:layout_
    android:layout_/>

</TextSwitcher>

【问题讨论】:

【参考方案1】:

我一直在生成的绑定类中搜索错误的位置。

那些TextView 可以在我的_binding 变量上直接访问。

// this does work
_binding.text1.setTextColor(_headerLabelColor);
_binding.text2.setTextColor(_headerLabelColor);

我认为他们需要像我的 TextSwitcher 的孩子一样可以访问,但我现在似乎学到了一些东西。

// this does not work but I expected it to
_binding.myTextSwitcher.text1.setTextColor(_headerLabelColor);
_binding.myTextSwitcher.text2.setTextColor(_headerLabelColor);

【讨论】:

以上是关于如何使用视图绑定访问 TextSwitcher 的子元素?的主要内容,如果未能解决你的问题,请参考以下文章

铜板街1--TextSwitcher实现文字上下翻牌效果

使用 textswitcher 切换文本时删除边距

在 Flutter 上实现 TextSwitcher

如何使用视图绑定从片段更改父活动中的视图[重复]

如何绑定只读的 WPF 控件属性(例如 ActualWidth),以便在视图模型中可以访问其值? [复制]

TextSwitcher实现文字上下翻牌效果