Q1) 查看 listSelector
的原始 ListView
状态可绘制对象,我们可以得到如下内容(为了简化示例,我删除了一些代码):
<selector>
<item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
<item android:drawable="<DRAWABLE_1>" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="<DRAWABLE_1>" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="<DRAWABLE_2>" android:state_focused="true"/>
</selector>
但是我在我的应用程序中一直这样做:
<selector>
<item android:drawable="<DRAWABLE_2>" android:state_pressed="false" android:state_focused="true"/>
<item android:drawable="<DRAWABLE_1>" android:state_pressed="true"/>
<item android:drawable="<TRANSPARENT>" />
</selector>
这似乎产生了相同的结果,而且更加简单。你有没有注意到第一个版本比我的版本更好?我只是想确保我没有错过什么重要的东西,因为我更喜欢让我的代码尽可能地简短...
Q2) 我看到许多状态可绘制对象都带有 <item android:drawable="<TRANSPARENT>" android:state_window_focused="false"/>
作为顶部项目,但我不明白为什么需要它。 state_window_focused
总是让我有点困惑... 它真的必要吗?