Add icon to v2 design

This commit is contained in:
khanhduytran0 2020-10-10 15:36:14 +07:00
parent 99ed485b1b
commit 2f79a74ad3
6 changed files with 68 additions and 48 deletions

View File

@ -75,6 +75,8 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.*;
import android.support.v4.app.*;
/**
* VerticalTabLayout provides a vertical layout to display tabs.
@ -276,7 +278,7 @@ public class VerticalTabLayout extends ScrollView {
private ValueAnimator mScrollAnimator;
ViewPager mViewPager;
private PagerAdapter mPagerAdapter;
private ViewPagerAdapter mPagerAdapter;
private DataSetObserver mPagerAdapterObserver;
private VerticalTabLayoutOnPageChangeListener mPageChangeListener;
private AdapterChangeListener mAdapterChangeListener;
@ -808,7 +810,7 @@ public class VerticalTabLayout extends ScrollView {
mCurrentVpSelectedListener = new ViewPagerOnTabSelectedListener(viewPager);
addOnTabSelectedListener(mCurrentVpSelectedListener);
final PagerAdapter adapter = viewPager.getAdapter();
final ViewPagerAdapter adapter = (VerticalTabLayout.ViewPagerAdapter) viewPager.getAdapter();
if (adapter != null) {
// Now we'll populate ourselves from the pager adapter, adding an observer if
// autoRefresh is enabled
@ -840,7 +842,7 @@ public class VerticalTabLayout extends ScrollView {
* when the {@link PagerAdapter} is changed.
*/
@Deprecated
public void setTabsFromPagerAdapter(@Nullable final PagerAdapter adapter) {
public void setTabsFromPagerAdapter(@Nullable final ViewPagerAdapter adapter) {
setPagerAdapter(adapter, false);
}
@ -882,7 +884,7 @@ public class VerticalTabLayout extends ScrollView {
- getPaddingRight());
}
void setPagerAdapter(@Nullable final PagerAdapter adapter, final boolean addObserver) {
void setPagerAdapter(@Nullable final ViewPagerAdapter adapter, final boolean addObserver) {
if (mPagerAdapter != null && mPagerAdapterObserver != null) {
// If we already have a PagerAdapter, unregister our observer
mPagerAdapter.unregisterDataSetObserver(mPagerAdapterObserver);
@ -909,6 +911,9 @@ public class VerticalTabLayout extends ScrollView {
final int adapterCount = mPagerAdapter.getCount();
for (int i = 0; i < adapterCount; i++) {
addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false);
if (mPagerAdapter.getIcon(i) != 0) {
getTabAt(i).setIcon(mPagerAdapter.getIcon(i));
}
}
// Make sure we reflect the currently set ViewPager item
@ -2217,7 +2222,7 @@ public class VerticalTabLayout extends ScrollView {
public void onAdapterChanged(@NonNull ViewPager viewPager,
@Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter) {
if (mViewPager == viewPager) {
setPagerAdapter(newAdapter, mAutoRefresh);
setPagerAdapter((ViewPagerAdapter) newAdapter, mAutoRefresh);
}
}
@ -2225,4 +2230,57 @@ public class VerticalTabLayout extends ScrollView {
mAutoRefresh = autoRefresh;
}
}
public static class ViewPagerAdapter extends FragmentPagerAdapter {
List<ViewPagerItem> viewPagerList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
return viewPagerList.get(position).fragment;
}
@Override
public int getCount() {
return viewPagerList.size();
}
public int getIcon(int position) {
return viewPagerList.get(position).icon;
}
@Override
public CharSequence getPageTitle(int position) {
return viewPagerList.get(position).title;
}
public void addFragment(Fragment fragment, int icon, String name) {
ViewPagerItem item = new ViewPagerItem();
item.fragment = fragment;
item.icon = icon;
item.title = name;
viewPagerList.add(item);
}
public void setFragment(int index, Fragment fragment, int icon, String name) {
ViewPagerItem item = new ViewPagerItem();
item.fragment = fragment;
item.icon = icon;
item.title = name;
viewPagerList.set(index, item);
}
public void removeFragment(int index) {
viewPagerList.remove(index);
}
}
public static class ViewPagerItem {
public Fragment fragment;
public String title;
public int icon;
}
}

View File

@ -5,6 +5,7 @@ import android.content.*;
import android.graphics.*;
import android.os.*;
import android.support.design.widget.*;
import android.support.design.widget.VerticalTabLayout.ViewPagerAdapter;
import android.support.v4.app.*;
import android.support.v4.view.*;
import android.support.v7.app.*;
@ -109,9 +110,10 @@ public class PojavLauncherActivity extends AppCompatActivity
crashView = new CrashFragment();
viewPageAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPageAdapter.addFragment(new LauncherFragment(), getString(R.string.mcl_tab_news));
viewPageAdapter.addFragment(consoleView, getString(R.string.mcl_tab_console));
viewPageAdapter.addFragment(crashView, getString(R.string.mcl_tab_crash));
viewPageAdapter.addFragment(new LauncherFragment(), R.drawable.ic_menu_news, getString(R.string.mcl_tab_news));
viewPageAdapter.addFragment(consoleView, R.drawable.ic_menu_java, getString(R.string.mcl_tab_console));
viewPageAdapter.addFragment(crashView, 0, getString(R.string.mcl_tab_crash));
viewPageAdapter.addFragment(new LauncherPreferenceFragment(), R.drawable.ic_menu_settings, getString(R.string.mcl_option_settings));
viewPager.setAdapter(viewPageAdapter);
tabLayout.setupWithViewPager(viewPager);
@ -854,44 +856,4 @@ public class PojavLauncherActivity extends AppCompatActivity
}
dialog.show();
}
private class ViewPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragmentList = new ArrayList<>();
List<String> fragmentTitles = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
public void addFragment(Fragment fragment, String name) {
fragmentList.add(fragment);
fragmentTitles.add(name);
}
public void setFragment(int index, Fragment fragment, String name) {
fragmentList.set(index, fragment);
fragmentTitles.set(index, name);
}
public void removeFragment(int index) {
fragmentList.remove(index);
fragmentTitles.remove(index);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B