Closed androidliuzemin closed 6 years ago
楼主代码中指示器选中与否的写法是 for (int i = 0; i < mPointRealContainerLl.getChildCount(); i++) { mPointRealContainerLl.getChildAt(i).setEnabled(i == newCurrentPoint); // 处理指示器选中和未选中状态图片尺寸不相等 mPointRealContainerLl.getChildAt(i).requestLayout(); } 这样会有问题,如果选中图片比未选中图片大的话,未选中图片会被拉伸。只需要改一点就可以了: mPointRealContainerLl.getChildAt(i).setSelected(i == newCurrentPoint); 把setEnabled改成setSelected就可以。相应的selector里的“state_enabled”也要改成“state_selected”
for (int i = 0; i < mPointRealContainerLl.getChildCount(); i++) { mPointRealContainerLl.getChildAt(i).setEnabled(i == newCurrentPoint); // 处理指示器选中和未选中状态图片尺寸不相等 mPointRealContainerLl.getChildAt(i).requestLayout(); }
mPointRealContainerLl.getChildAt(i).setSelected(i == newCurrentPoint);
在5.1系统上测试,尺寸不一样确实是未选中的图片会被拉伸。但在8.0系统上尺寸不一样就是正常的
nice 刚遇到这个问题
在vivo X7 Android 5.1.1上也遇到了这个问题,也是采用的这个方式解决。
楼主代码中指示器选中与否的写法是
for (int i = 0; i < mPointRealContainerLl.getChildCount(); i++) { mPointRealContainerLl.getChildAt(i).setEnabled(i == newCurrentPoint); // 处理指示器选中和未选中状态图片尺寸不相等 mPointRealContainerLl.getChildAt(i).requestLayout(); }
这样会有问题,如果选中图片比未选中图片大的话,未选中图片会被拉伸。只需要改一点就可以了:mPointRealContainerLl.getChildAt(i).setSelected(i == newCurrentPoint);
把setEnabled改成setSelected就可以。相应的selector里的“state_enabled”也要改成“state_selected”