【发布时间】:2015-09-02 07:38:38
【问题描述】:
我正在尝试以编程方式为 Switch 定义一些自定义可绘制对象,使用 jelly bean 引入的 setXXXDrawable() 方法。但是,事情对我不利。
我当前的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
((Switch) view).setShowText(true);
//Background
StateListDrawable back = new StateListDrawable();
GradientDrawable backn = new GradientDrawable();
backn.setColor(TX.res.getColor(R.color.textSecondary));
backn.setCornerRadius(8 * TX.res.getDisplayMetrics().scaledDensity);
GradientDrawable backd = new GradientDrawable();
backn.setColor(TX.res.getColor(R.color.textDisabled));
backn.setCornerRadius(8 * TX.res.getDisplayMetrics().scaledDensity);
back.addState(new int[]{-android.R.attr.state_enabled}, backd);
back.addState(StateSet.WILD_CARD, backn);
((Switch) view).setTrackDrawable(back);
GradientDrawable thumbn = new GradientDrawable();
thumbn.setColor(TX.res.getColor(R.color.colorAccent));
thumbn.setCornerRadius(8 * TX.res.getDisplayMetrics().scaledDensity);
//((Switch) view).setThumbDrawable(thumbn);
如果我只设置 thumb drawable,JellyBean 和 Lollipop 都会按预期工作。
如果我只设置可绘制的轨道,那么棒棒糖会正确显示它。如果我还设置拇指可绘制,棒棒糖既不绘制,也只绘制文本。
另一方面,当我尝试设置可绘制轨迹时,果冻豆会立即显示几个点。这些点显然属于拇指(即使我只设置了可绘制的轨道),因为它们在按下开关时会移动。
我怎样才能声明我的可绘制对象,以便对我有利?
【问题讨论】: