Fix profile tab text contrast problem

Spec specify textColorSecondary of default state,
however, TabLayout uses a not expected state of the color.

This change sets default state color of textColorSecondary
instead of textColorSecondary.

Bug: 189793243
Test: manual visual
Change-Id: I025ffac68505016f4c4ffb7e1c0b2ff86308d3be
This commit is contained in:
Arc Wang
2021-07-01 11:53:09 +08:00
parent 1060b2f926
commit 566d06af22

View File

@@ -21,6 +21,7 @@ import static android.content.Intent.EXTRA_USER_ID;
import android.annotation.IntDef;
import android.app.Activity;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
@@ -113,6 +114,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
viewPager.setAdapter(new ProfileSelectFragment.ViewPagerAdapter(this));
final TabLayout tabs = tabContainer.findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
setupTabTextColor(tabs);
tabContainer.setVisibility(View.VISIBLE);
final TabLayout.Tab tab = tabs.getTabAt(selectedTab);
tab.select();
@@ -129,6 +131,30 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
return mContentView;
}
/**
* TabLayout uses ColorStateList of 2 states, selected state and empty state.
* It's expected to use textColorSecondary default state color as empty state tabTextColor.
*
* However, TabLayout uses textColorSecondary by a not expected state.
* This method sets tabTextColor with the color of expected textColorSecondary state.
*/
private void setupTabTextColor(TabLayout tabLayout) {
final ColorStateList defaultColorStateList = tabLayout.getTabTextColors();
final ColorStateList resultColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_selected},
new int[]{}
},
new int[] {
defaultColorStateList.getColorForState(new int[]{android.R.attr.state_selected},
Utils.getColorAttrDefaultColor(getContext(),
com.android.internal.R.attr.colorAccentPrimaryVariant)),
Utils.getColorAttrDefaultColor(getContext(), android.R.attr.textColorSecondary)
}
);
tabLayout.setTabTextColors(resultColorStateList);
}
@Override
public int getMetricsCategory() {
return METRICS_CATEGORY_UNKNOWN;