setColorFilter used if android.os.Build.VERSION.SDK_INT >= 21 (#3143)

This commit is contained in:
Vladimir Enchev
2016-11-23 09:42:31 +02:00
committed by GitHub
parent f4900959d3
commit beb70ee3f7

View File

@ -129,7 +129,7 @@ export class SegmentedBar extends common.SegmentedBar {
var that = new WeakRef(this); var that = new WeakRef(this);
this._listener = new android.widget.TabHost.OnTabChangeListener({ this._listener = new android.widget.TabHost.OnTabChangeListener({
onTabChanged: function(id: string) { onTabChanged: function (id: string) {
var bar = that.get(); var bar = that.get();
if (bar) { if (bar) {
bar.selectedIndex = parseInt(id); bar.selectedIndex = parseInt(id);
@ -282,18 +282,23 @@ export class SegmentedBarStyler implements style.Styler {
for (let tabIndex = 0; tabIndex < tabHost.getTabWidget().getTabCount(); tabIndex++) { for (let tabIndex = 0; tabIndex < tabHost.getTabWidget().getTabCount(); tabIndex++) {
let vg = <android.view.ViewGroup>tabHost.getTabWidget().getChildTabViewAt(tabIndex); let vg = <android.view.ViewGroup>tabHost.getTabWidget().getChildTabViewAt(tabIndex);
let stateDrawable = new android.graphics.drawable.StateListDrawable(); var backgroundDrawable = vg.getBackground();
if (android.os.Build.VERSION.SDK_INT >= 21 && backgroundDrawable && types.isFunction(backgroundDrawable.setColorFilter)) {
let arr = (<any>Array).create("int", 1); backgroundDrawable.setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
arr[0] = R_ATTR_STATE_SELECTED;
let colorDrawable: android.graphics.drawable.ColorDrawable = new SegmentedBarColorDrawableClass(newValue)
stateDrawable.addState(arr, colorDrawable);
stateDrawable.setBounds(0, 15, vg.getRight(), vg.getBottom());
if (android.os.Build.VERSION.SDK_INT >= 16) {
vg.setBackground(stateDrawable);
} else { } else {
vg.setBackgroundDrawable(stateDrawable); let stateDrawable = new android.graphics.drawable.StateListDrawable();
let arr = (<any>Array).create("int", 1);
arr[0] = R_ATTR_STATE_SELECTED;
let colorDrawable: android.graphics.drawable.ColorDrawable = new SegmentedBarColorDrawableClass(newValue)
stateDrawable.addState(arr, colorDrawable);
stateDrawable.setBounds(0, 15, vg.getRight(), vg.getBottom());
if (android.os.Build.VERSION.SDK_INT >= 16) {
vg.setBackground(stateDrawable);
} else {
vg.setBackgroundDrawable(stateDrawable);
}
} }
} }
} }