Android - 滚动到 ChipGroup 中选定的子位置

Kev*_*vie 3 android android-chips

我正在尝试Chips在水平滚动中制作一个包含 4 的 Activity ChipGroup

此活动使用ChipGroup作为 API 调用的过滤器,并且可以有附加信息告诉用户选择了哪个芯片。

目前我正在这样做:

chipScroll.postDelayed(() -> {
                chipScroll.smoothScrollBy(800, 0);
            },100);
Run Code Online (Sandbox Code Playgroud)

但这对于我想要实现的目标来说是一个相当古怪的解决方案。

还有其他方法可以滚动到Chip水平滚动中的选定内容吗ChipGroup

编辑 :

我想过尝试迭代地获取所有芯片ChipGroup并匹配其 ID。但它似乎也很hacky。spinnerAdapter.getItem(spinner.getSelectedItemPosition)我的目标是这样的

Kev*_*vie 6

我在这里找到了答案。

我忘记了它ChipGroup基本上只是一个ViewGroup,只是HorizontalScrollView为了滚动目的而额外添加的。

我可以做类似的事情:

chipGroup.post(() -> {
    Chip chipByTag = chipGroup.findViewWithTag(filterModel.getComplaint_status());
    chipGroup.check(chipByTag.getId());
    chipScroll.smoothScrollTo(chipByTag.getLeft() - chipByTag.getPaddingLeft(), chipByTag.getTop());
});
Run Code Online (Sandbox Code Playgroud)

执行此操作onCreate会崩溃,因为Tag尚未分配,并且我正在使用DataBindingXML (CMIIW) 中的标记,因此,我们应该在.post()可运行中执行此操作。