use*_*321 13 android android-widget
我有这样的抽象:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/seek_thumb_pressed" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/seek_thumb_selected" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/seek_thumb_selected" />
<item android:drawable="@drawable/seek_thumb_normal" />
Run Code Online (Sandbox Code Playgroud)
在代码中,如何设置Drawable的特定状态?我想将它设置为state_pressed = true状态.
use*_*321 23
得到它了.来自此处的评论有助于:Android:如何以编程方式更新选择器(StateListDrawable)
所以Drawable.setState()采用整数数组.这些整数表示可绘制的状态.您可以传递任何您想要的整数.一旦ints传入匹配状态列表中的"item"drawables,drawable就会在该状态下绘制.
它在代码中更有意义:
int[] state = new int[] {android.R.attr.state_window_focused, android.R.attr.state_focused};
minThumb.setState(state);
Run Code Online (Sandbox Code Playgroud)
请注意,我的状态列表drawable具有state_pressed="true"和android:state_window_focused="true".所以我必须将这两个int值都传递给setState.当我想清除它时,我就是minThumb.setState(new int[]{});
小智 9
没有足够的点数来评论,所以这只是 android-developer 所说的补充。对于某些状态,例如 state_enabled,没有明显的方法来设置该状态的相反值(例如,没有 state_disabled)。要指示负或相反的状态,只需传递该状态的资源的负值。
int[] state = new int[] {-android.R.attr.state_enabled}; //Essentially state_disabled
Run Code Online (Sandbox Code Playgroud)
然后像往常一样将该整数数组传递给 setState() 方法。
minThumb.setState(state);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15341 次 |
| 最近记录: |