Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. import android.content.Context;
  2. import android.os.Build;
  3. import android.support.annotation.NonNull;
  4. import android.support.design.widget.TabLayout;
  5. import android.util.AttributeSet;
  6.  
  7. /**
  8. * Created by dale on 2/28/17.
  9. * Tab Layout that auto converts from MODE_FIXED to MODE_SCROLLABLE when the tabs don't fit anymore.
  10. */
  11.  
  12. public class FillScrollableTabLayout extends TabLayout {
  13.  
  14. private int scrollableTabMinWidth;
  15.  
  16. public FillScrollableTabLayout(Context context) {
  17. super(context);
  18. initialize();
  19. }
  20.  
  21. public FillScrollableTabLayout(Context context, AttributeSet attrs) {
  22. super(context, attrs);
  23. initialize();
  24. }
  25.  
  26. public FillScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
  27. super(context, attrs, defStyleAttr);
  28. initialize();
  29. }
  30.  
  31. private void initialize() {
  32. // waiting for google to make this an attr
  33. scrollableTabMinWidth = getResources()
  34. .getDimensionPixelSize(android.support.design.R.dimen.design_tab_scrollable_min_width);
  35. }
  36.  
  37. @Override
  38. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  39. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  40. adjustSize();
  41. }
  42.  
  43. @Override
  44. public void addTab(@NonNull Tab tab) {
  45. super.addTab(tab);
  46. }
  47.  
  48. private void adjustSize() {
  49. int totalTabSize = 0;
  50. for(int i=0; i < getTabCount(); i++) {
  51. if(getTabAt(i).getCustomView() != null) {
  52. totalTabSize += getTabAt(i).getCustomView().getMeasuredWidth() > scrollableTabMinWidth ?
  53. getTabAt(i).getCustomView().getMeasuredWidth() : scrollableTabMinWidth;
  54. }
  55. }
  56.  
  57. if(totalTabSize >= getMeasuredWidth()) {
  58. setTabMode(TabLayout.MODE_SCROLLABLE);
  59. }
  60. else {
  61. setTabMode(TabLayout.MODE_FIXED);
  62. setTabGravity(TabLayout.GRAVITY_FILL);
  63. }
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement