Fixed tab page icons (2)

pull/199/head
M66B 3 years ago
parent 9c5baa33ae
commit 121b432fd6

@ -26,16 +26,16 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.DynamicDrawableSpan;
import android.text.style.ImageSpan;
import android.text.style.RelativeSizeSpan;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@ -84,6 +84,32 @@ public class FragmentOptions extends FragmentBase {
R.layout.fragment_options_misc
};
private static final int[] PAGE_TITLES = {
R.string.title_advanced_section_main,
R.string.title_advanced_section_synchronize,
R.string.title_advanced_section_send,
R.string.title_advanced_section_connection,
R.string.title_advanced_section_display,
R.string.title_advanced_section_behavior,
R.string.title_advanced_section_privacy,
R.string.title_advanced_section_encryption,
R.string.title_advanced_section_notifications,
R.string.title_advanced_section_misc
};
private static final int[] PAGE_ICONS = {
R.drawable.twotone_home_24,
R.drawable.twotone_sync_24,
R.drawable.twotone_send_24,
R.drawable.twotone_cloud_24,
R.drawable.twotone_monitor_24,
R.drawable.twotone_psychology_24,
R.drawable.twotone_account_circle_24,
R.drawable.twotone_lock_24,
R.drawable.twotone_notifications_24,
R.drawable.twotone_more_24
};
static String[] OPTIONS_RESTART = new String[]{
"first", "app_support", "notify_archive", "message_swipe", "message_select", "folder_actions", "folder_sync",
"subscriptions", "check_authentication", "check_reply_domain",
@ -177,6 +203,19 @@ public class FragmentOptions extends FragmentBase {
TabLayout tabLayout = view.findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(pager);
Resources res = getResources();
int colorAccent = Helper.resolveColor(getContext(), R.attr.colorAccent);
for (int i = 0; i < tabLayout.getTabCount(); i++) {
Drawable d = res.getDrawable(PAGE_ICONS[i]);
d.setColorFilter(colorAccent, PorterDuff.Mode.SRC_ATOP);
SpannableStringBuilder title = new SpannableStringBuilder(getString(PAGE_TITLES[i]));
if (i > 0)
title.setSpan(new RelativeSizeSpan(0.85f), 0, title.length(), 0);
tabLayout.getTabAt(i)
.setIcon(d)
.setText(title);
}
String tab = getActivity().getIntent().getStringExtra("tab");
if ("connection".equals(tab))
pager.setCurrentItem(3);
@ -466,57 +505,6 @@ public class FragmentOptions extends FragmentBase {
}
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getTitle(R.string.title_advanced_section_main, R.drawable.twotone_home_24, position);
case 1:
return getTitle(R.string.title_advanced_section_synchronize, R.drawable.twotone_sync_24, position);
case 2:
return getTitle(R.string.title_advanced_section_send, R.drawable.twotone_send_24, position);
case 3:
return getTitle(R.string.title_advanced_section_connection, R.drawable.twotone_cloud_24, position);
case 4:
return getTitle(R.string.title_advanced_section_display, R.drawable.twotone_monitor_24, position);
case 5:
return getTitle(R.string.title_advanced_section_behavior, R.drawable.twotone_psychology_24, position);
case 6:
return getTitle(R.string.title_advanced_section_privacy, R.drawable.twotone_account_circle_24, position);
case 7:
return getTitle(R.string.title_advanced_section_encryption, R.drawable.twotone_lock_24, position);
case 8:
return getTitle(R.string.title_advanced_section_notifications, R.drawable.twotone_notifications_24, position);
case 9:
return getTitle(R.string.title_advanced_section_misc, R.drawable.twotone_more_24, position);
default:
throw new IllegalArgumentException();
}
}
private CharSequence getTitle(int titleid, int iconid, int position) {
String title = getString(titleid).toUpperCase();
Drawable icon = getResources().getDrawable(iconid);
int iconSize = getResources().getDimensionPixelSize(R.dimen.menu_item_icon_size);
if (position > 0)
iconSize = Math.round(iconSize * 0.85f);
icon.setBounds(0, 0, iconSize, iconSize);
int color = Helper.resolveColor(getContext(), R.attr.colorAccent);
icon.setTint(color);
ImageSpan imageSpan = new ImageSpan(icon, DynamicDrawableSpan.ALIGN_BOTTOM);
SpannableStringBuilder ssb = new SpannableStringBuilder(title);
if (position > 0)
ssb.setSpan(new RelativeSizeSpan(0.85f), 0, ssb.length(), 0);
ssb.insert(0, "\uFFFC\u2002"); // object replacement character, en space
ssb.setSpan(imageSpan, 0, 1, 0);
return ssb;
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE; // always recreate fragment

@ -15,9 +15,9 @@
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/tabLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabInlineLabel="true"
app:tabMode="scrollable" />
</androidx.viewpager.widget.ViewPager>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -492,14 +492,6 @@
<item name="android:fadeScrollbars">false</item>
</style>
<style name="tabLayoutStyle" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/tabLayoutStyleTextAppearance</item>
</style>
<style name="tabLayoutStyleTextAppearance" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>
</style>
<style name="fullScreenDialog" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>

Loading…
Cancel
Save