我有一个状态列表绘制的,我想从状态列表绘制获取特定的绘制:获取从状态列表绘制特定绘制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:kplus="http://schemas.android.com/apk/res-auto">
<item kplus:key_type_space_alt="true" android:state_pressed="true" android:drawable="@drawable/space_1_pressed" />
<item kplus:key_type_space_alt="true" android:drawable="@drawable/space_1_normal" />
<!-- TopNav keys. -->
<item kplus:key_type_topnav="true" android:state_pressed="true" android:drawable="@drawable/tab_down" />
<item kplus:key_type_topnav="true" android:state_selected="true" android:drawable="@drawable/tab_down" />
<item kplus:key_type_topnav="true" android:drawable="@drawable/tab_normal" />
<!-- TopRow keys. -->
<item kplus:key_type_toprow="true" android:state_pressed="true" android:drawable="@drawable/numeric_presseed" />
<item kplus:key_type_toprow="true" android:drawable="@drawable/numeric_normal" />
</selector>
我选择了正确的绘制状态每个键,有点像这样的:
if (keyIsNumbers) {
if (KPlusInputMethodService.sNumbersState == 2) {
drawableState = mDrawableStatesProvider.KEY_STATE_TOPNAV_CHECKED;
}
}
现在的状态定义是这样的:
KEY_STATE_TOPNAV_NORMAL = new int[] {keyTypeTopNavAttrId};
KEY_STATE_TOPNAV_PRESSED = new int[] {keyTypeTopNavAttrId, android.R.attr.state_pressed};
KEY_STATE_TOPNAV_CHECKED = new int[] {keyTypeTopNavAttrId, android.R.attr.state_selected};
现在的问题是如何为每个状态提取正确的drawable?我需要获取可绘制的9patch填充,因为如果状态在9patch上具有不同的填充,它将仅为顶部可绘制填充填充,并且我想为每个键手动设置填充(drawable.getPadding(rect)) 。
你无法获取形成StateListDrawable的Drawables – pskink 2014-11-03 12:07:27
我想我可以让他们使用属性ID从stateDrawable [0]你确定它不可能?:( – Tazz 2014-11-03 12:22:13
你需要什么ID?我也不明白为什么你需要访问特定的Drawable ... – pskink 2014-11-03 12:48:14