Add support for TabView CSS

This commit is contained in:
Rossen Hristov
2016-10-24 11:13:30 +03:00
parent 2c7efac368
commit 25fe583ffa
2 changed files with 75 additions and 0 deletions

View File

@@ -123,6 +123,28 @@ public class TabLayout extends HorizontalScrollView {
*/ */
public void setSelectedIndicatorColors(int... colors) { public void setSelectedIndicatorColors(int... colors) {
mTabStrip.setSelectedIndicatorColors(colors); mTabStrip.setSelectedIndicatorColors(colors);
this.mSelectedIndicatorColors = colors;
}
private int[] mSelectedIndicatorColors;
public int[] getSelectedIndicatorColors() {
return this.mSelectedIndicatorColors;
}
public void setTabTextColor(Integer color){
mTabStrip.setTabTextColor(color);
}
public Integer getTabTextColor(){
return mTabStrip.getTabTextColor();
}
public void setSelectedTabTextColor(Integer color){
mTabStrip.setSelectedTabTextColor(color);
}
public Integer getSelectedTabTextColor(){
return mTabStrip.getSelectedTabTextColor();
} }
/** /**

View File

@@ -21,10 +21,13 @@ import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView;
class TabStrip extends LinearLayout { class TabStrip extends LinearLayout {
@@ -47,6 +50,10 @@ class TabStrip extends LinearLayout {
private TabLayout.TabColorizer mCustomTabColorizer; private TabLayout.TabColorizer mCustomTabColorizer;
private final SimpleTabColorizer mDefaultTabColorizer; private final SimpleTabColorizer mDefaultTabColorizer;
private int mDefaultTabTextColor;
private Integer mTabTextColor;
private Integer mSelectedTabTextColor;
TabStrip(Context context) { TabStrip(Context context) {
this(context, null); this(context, null);
} }
@@ -74,6 +81,9 @@ class TabStrip extends LinearLayout {
mSelectedIndicatorThickness = (int) (SELECTED_INDICATOR_THICKNESS_DIPS * density); mSelectedIndicatorThickness = (int) (SELECTED_INDICATOR_THICKNESS_DIPS * density);
mSelectedIndicatorPaint = new Paint(); mSelectedIndicatorPaint = new Paint();
TextView defaultTextView = new TextView(context);
mDefaultTabTextColor = defaultTextView.getTextColors().getDefaultColor();
} }
void setCustomTabColorizer(TabLayout.TabColorizer customTabColorizer) { void setCustomTabColorizer(TabLayout.TabColorizer customTabColorizer) {
@@ -88,10 +98,53 @@ class TabStrip extends LinearLayout {
invalidate(); invalidate();
} }
void setTabTextColor(Integer color){
mTabTextColor = color;
updateTabsTextColor();
}
Integer getTabTextColor(){
return mTabTextColor;
}
void setSelectedTabTextColor(Integer color){
mSelectedTabTextColor = color;
updateTabsTextColor();
}
Integer getSelectedTabTextColor(){
return mSelectedTabTextColor;
}
private void updateTabsTextColor(){
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++){
LinearLayout linearLayout = (LinearLayout)getChildAt(i);
TextView textView = (TextView)linearLayout.getChildAt(1);
if (i == mSelectedPosition){
if (mSelectedTabTextColor != null){
textView.setTextColor(mSelectedTabTextColor);
}
else {
textView.setTextColor(mDefaultTabTextColor);
}
}
else {
if (mTabTextColor != null){
textView.setTextColor(mTabTextColor);
}
else {
textView.setTextColor(mDefaultTabTextColor);
}
}
}
}
void onViewPagerPageChanged(int position, float positionOffset) { void onViewPagerPageChanged(int position, float positionOffset) {
mSelectedPosition = position; mSelectedPosition = position;
mSelectionOffset = positionOffset; mSelectionOffset = positionOffset;
invalidate(); invalidate();
updateTabsTextColor();
} }
@Override @Override