我有一个选择ListView
,每行都有选择器。选择器行为如下。请注意,ListView
本身也会置于白色LinearLayout
。
android:exitFadeDuration
以下是我的选择器的外观
<selector android:exitFadeDuration="@android:integer/config_mediumAnimTime"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@drawable/blue" />
<!-- http://stackoverflow.com/questions/2217753/changing-background-color-of-listview-items-on-android -->
<item android:state_pressed="true" android:drawable="@android:color/transparent" /> <!-- pressed -->
<item android:state_focused="true" android:drawable="@android:color/transparent" /> <!-- focused -->
<item android:state_selected="true" android:drawable="@android:color/transparent" /> <!-- selected -->
<item android:drawable="@drawable/white" />
</selector>
当我通过Java代码执行选择时,淡入淡出的动画效果看起来很完美
// Highlighting.
listView.performItemClick(getListView().getAdapter().getView(index, null, null), index, index);
listView.post(new Runnable() {
@Override
public void run() {
listView.setSelection(index);
}
}
但是,如果我通过明确点击ListView
进行手动选择,我会看到略微闪烁的效果!
我可以知道为什么会这样吗?有什么方法可以避免这种情况吗?我意识到即使我将透明状态更改为
<item android:state_pressed="true" android:drawable="@drawable/blue" /> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/blue" /> <!-- focused -->
<item android:state_selected="true" android:drawable="@drawable/blue" /> <!-- selected -->
闪烁仍然发生。注意,如果没有android:exitFadeDuration
,则不会出现闪烁效果。但是,删除android:exitFadeDuration
不是我想要的。